The Racket repository
![]() (as requested by Asumu) A witness accessor or mutator is still required to create a structure chaperone, but `#f` can be provided in place of a redirection, and then impersonator properties can be attached to the chaperone. At the same time, adjust `(chaperone-of? v1 v2)` so that `v1` as a chaperone is not required to preserve non-redirecting chaperones of `v2`. The overall consequence is that a redirection procedure can cooperate with a (suitably protected) impersonator property to override redirection behavior without running afoul of the chaperone invariant and without requiring O(N) space for O(N) overrides. For example, the contract system can implement the re-application of a contract with different blame information by overriding blame information as represented by properties, instead of adding a new chaperone layer every time that blame changes. ... and all the same for non-chaperone impersonators, of course. |
||
---|---|---|
native-pkgs@2648702ac3 | ||
pkgs | ||
racket | ||
.gitattributes | ||
.gitignore | ||
.gitmodules | ||
.mailmap | ||
.travis.yml | ||
INSTALL.txt | ||
Makefile | ||
README.txt |
This is the source code for the main Racket distribution. See "INSTALL.txt" for information on building Racket. License ------- Racket Copyright (c) 2010-2014 PLT Design Inc. Racket is distributed under the GNU Lesser General Public License (LGPL). This means that you can link Racket into proprietary applications, provided you follow the rules stated in the LGPL. You can also modify Racket; if you distribute a modified version, you must distribute it under the terms of the LGPL, which in particular means that you must release the source code for the modified software. See racket/src/COPYING_LESSER.txt for more information.