A picture showing all the languages used to implement Racket.
Source code: https://github.com/samth/lang-slide
Here is a bird’s eye view of the modules implementing the Racket distribution, as organized by the filesystem structure (so the root in the middle corresponds to a directory containing the Racket distribution, and subtrees are nested directories):
And here are the languages they use:
1 Pictures
(require lang-slide/pictures) | package: lang-slide |
"lang-slide/pictures" provides several picts, with some options.
procedure
(langs-pict color? [ #:fit? fit? #:picts picts #:more? more? #:layout layout]) → pict? color? : any fit? : any/c = #f
picts : (listof pict-convertible?) = (if (pict? color?) (list color?) null) more? : any/c = #f layout : (or/c '20% center) = '20%
Extra picts in picts are added to the bottom of the table of colors. For historical reasons, if color? is a pict, it is put into a list for the default value of picts.
If more? is true, then the picture includes additional languages provided by packages that have been installed on an example Racketeer’s machine.
The layout argument determines how the filesystem graph is aligned with respect to the table of language colors. The '20% mode top-aligns the graph and table, but puts a margin above the graph that is 20% of its size. The 'center mode center-aligns the plot and table.
Changed in version 1.1 of package lang-slide: Added the #:more? and #:layout arguments.
procedure
(langs-in-tree color? [#:more? more?]) → pict?
color? : boolean? more? : any/c = #f
Changed in version 1.1 of package lang-slide: Added the #:more? argument.
procedure
(langs-with-colors [#:more? more?]) → (listof pict?)
more? : any/c = #f
Changed in version 1.1 of package lang-slide: Added the #:more? argument.
2 Slides
To show a slide that demos the pict, run main.rkt on the command-lide, or use
#lang racket (require (submod lang-slide/main main))
hudak-quote.rkt has a slideshow slide that uses the picture along with a quote from Paul Hudak.
3 PNG
mk-img.rkt generates a PNG of the image.
4 Regenerating the data
find.rkt regenerates lang.plain and lang-colors.rktd automatically when run.