The Racket repository
![]() Added new implementation of contract structure properties. Contracts are now based on prop:contract, and flat contracts are based on prop:flat-contract. The flat contract property inherits prop:contract (flat contracts are contracts) and prop:procedure (flat contracts are predicates). A value is now a contract if it has prop:contract, or if it is a flat contract. A value is now a flat contract if it has prop:flat-contract, or if it is a procedure of one argument (assumed to be a predicate), or if it is one of the constants allowed as a flat contract (e.g. booleans, numbers, strings, symbols, regular expressions). The old custom contract systems (proj-prop and friends, make-proj-contract and friends) have been supplanted by the new properties, constructors for the properties' associated values, and "simple-contract" and "simple-flat-contract" constructors for one-off contracts. These forms are all documented in the reference. Documentation of the legacy bindings has been removed, though as many of them as possible are still exported to give legacy code time to migrate. This commit includes all the changes to the contract system, plus replacement of all uses of the legacy bindings (proj-prop, proj-get, make-proj-contract, several others) in other collections. svn: r18009 |
||
---|---|---|
collects | ||
doc | ||
man/man1 | ||
src |