The Racket repository
Go to file
Robby Findler 9401a537e0 extend the opters to track if a contract has any negative blame
(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.
2012-05-10 21:59:39 -05:00
collects extend the opters to track if a contract has any negative blame 2012-05-10 21:59:39 -05:00
doc scribble/eval: add eval:result' and eval:results' 2012-05-09 19:11:21 -06:00
man/man1 2011 -> 2012 2011-12-31 15:16:59 -05:00
src fix non-futures, non-places build 2012-05-08 06:54:34 -06:00
.gitattributes Don't include git files in archives. 2010-05-12 01:46:05 -04:00
.gitignore Remove erroneous file, and add an ignore rule for it. 2012-02-17 09:09:21 -05:00
.mailmap Mailmap mapping for dvanhorn. 2012-02-29 00:33:07 -05:00
README 2011 -> 2012 2011-12-31 15:16:59 -05:00

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.