The Racket repository
![]() cells when searching in the tree Two tricks: represent lists of nodes as improper lists so singleton lists don't allocate a cons and pass around two accumulators that correspond to the hd & tl of a path, instead of cons'ing that up into a list and them immediately taking it apart again measurement: when starting up drracket with collects/drracket/private/unit.rkt and then waiting for the colorer to finish, and then inserting an open quote right before the first open quote in the file (and waiting again for the colorer to finish) creates 249000 cons cells before this change and 116000 after this change After a little more work, I'm pretty much convinced that this was the wrong approach and that the splaying implementation should just change to not allocate the paths into lists at all, thus removing the other 116k cons cells. (I plan to get to this another day; it should not be difficult now that I roughly understand how these things work.) I also looked into top-down splaying and found these notes to be illuminating: http://digital.cs.usu.edu/~allan/DS/Notes/Ch22.pdf They essentially convinced me that we cannot use top-down splaying here, since the "reassembling" stage requires moving some arbitrary, unexplored subtree from a right-child to a left-child, and thus the left-subtree-length cannot be updated properly. |
||
---|---|---|
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.