rebellion
rebellion copied to clipboard
A collection of core libraries for Racket
In this code, the generated field accessor for the `type` field of the `widget` tuple is named `widget-type` and conflicts with the `widget-type` tuple: ```racket (define-tuple-type widget (type size weight))...
Instead of this: ``` (bitstring 1 0 0 1 0 0 1 1 0 0 1 1 0 0 0 0) ``` Bitstrings should print something like this: ``` (bitstring...
Large collections cause problems when they're printed: - They lock up DrRacket when printed at the REPL, making it unresponsive. - Scribble docs that print large collections cause the doc...
Analogous to `struct-guard/c`, there should be `xxx-guard/c` contract combinators for use with each kind of type in `rebellion/type`. They should provide APIs similar to the constructors of the kind of...
Part of #42. Record types should allow guards. The signature of a record guard should match the contract `(-> record-type? (-> any/c ... any))`, accepting information about the record type...
Part of #42. Wrapper types should allow guards. The signature of a wrapper guard should match the contract `(-> wrapper-type? any/c any/c)`, accepting an argument with information about the wrapper...
Part of #42. Tuple types should allow guards. The signature of a wrapper guard should match the contract `(-> wrapper-type? any/c ... any)`, accepting an argument with information about the...
Rebellion should include documentation about best practices when writing Racket code that uses it. This should serve a few purposes: - Advice on how to use various Rebellion features. -...
This is mainly a problem for properties that associate a value only with a type, not with each instance. For example, consider a `prop:default-instance` property and a `(default-instance type)` function....
A bidirectional dictionary can map keys to values in constant time, and values back to their keys in constant time. The same value cannot be mapped by more than one...