A picture showing all the languages used to implement Racket.
1 Pictures
langs-pict
langs-in-tree
langs-with-colors
2 Slides
3 PNG
4 Regenerating the data
7.7

A picture showing all the languages used to implement Racket.

Sam Tobin-Hochstadt (Originally by Robby Findler)

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):

image

And here are the languages they use:

image

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%
If color? is #f, graph nodes are all gray, and the table of colors is not shown (although space for the table is included in the result pict).

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
Just the graph of modules.

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
Just the table of language colors.

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.