The Racket repository
![]() (this is similar to being flat, but struct contract (lazy ones) can be non-flat and still have no negative blame). Use this to optimize struct/dc contracts; specifically when a contract has no negative blame, then we don't need to add additional wrapping for indy-ness. This ended up being fairly tricky to handle the case where there are several mutually recursive define-opt/c functions. The code tracks which definitions depend on which ones and does a graph traversal of the dependencies to find if there is any non-negative blame possible. Naturally, this uses Racket's macro system to communicate between the definitions. |
||
---|---|---|
collects | ||
doc | ||
man/man1 | ||
src | ||
.gitattributes | ||
.gitignore | ||
.mailmap | ||
README |
The Racket programming language =============================== Important executables: * DrRacket: Racket's integrated development environment (start here!). * Racket: the main command-line entry point for running racket programs and scripts. * GRacket: the GUI-mode Racket executable. * raco: Racket's command-line toolset. More Information ---------------- Racket comes with extensive documentation: use DrRacket's `Help' menu, or run `raco docs'. Also, visit us at http://racket-lang.org/ for more Racket resources. Instructions for building Racket from source are in src/README. License ------- Racket Copyright (c) 2010-2012 PLT Scheme 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 doc/release-notes/COPYING.txt for more information.