The Racket repository
![]() For the curious, this was an attempt to change the way context matching works. Currently, when matching a pattern, if 'hole' is encountered, the match succeeds and the result just includes the term at that point. This means that when matching (in-hole p1 p2), p1 generally returns multiple results and then those results are thinned out by matching p2 against the thing actually at the hole. Instead, one could pass along the function that does the matching and then, when matching a hole pattern, it could decide right at that point whether or not the match works. This seems like it would be a win overall, but it interferes with caching. Specifically, most reduction systems have lots of rules that all begin (--> (in-hole E ...) ...) and, in the strategy first described above, that matching can be cached. But in the second, it cannot. Overall, this turns out to be a slight lose in the current version of Redex. Maybe if other things change, however, this tradeoff will change. Revert "IN PROGRESS: more context speedup attempt" This reverts commit |
||
---|---|---|
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.