Hacker News new | past | comments | ask | show | jobs | submit login
Rabbit Scheme Compiler (github.com/dhess)
64 points by swatson741 on July 4, 2023 | hide | past | favorite | 15 comments



Guy Steele's master's thesis explains the ideas, and includes this code as an appendix with extra comments on the facing pages (from page 117): https://dspace.mit.edu/bitstream/handle/1721.1/6913/AITR-474...

I also added extra comments (my own notes as I figured things out) in a copy up on my old website (with permission) -- I didn't know about the above appendix at the time. I'm not sure if it'd add anything to the above, but I could dig it up.

Related work at https://en.wikisource.org/wiki/Lambda_Papers



In case anyone is wondering about the name Rabbit.

It's an old pun in the Scheme world to make Scheme compilers have a name that ends in "bit". I know at least three:

- Orbit - Rabbit - Gambit


Gambit also hits another naming convention for Scheme implementations: that they be synonyms for "scheme" or related to it.

Scheme, Gambit, Racket, Guile, Larceny.

Gauche might be an antonym?

(IIRC, Racket got its name shortly before they were looking into promoting its use on Wall Street. I guess OCaml didn't have the problem of lighting up the regulatory compliance monitoring board every time someone mentioned "Racket" in email.)


Guile has the extra layer of being "Guy L." (Steele)


>Gauche might be an antonym?

IIRC it is a reference to this (Gauche author is Japanese)

https://en.wikipedia.org/wiki/Gauche_the_Cellist


Also: Picobit and Picbit.


Rabbit was the first. I read somewhere that this was a kind of pun on the MacLisp LAPIN function. LAPIN assembled LAP code, Lisp Assembly Program (the penultimate stage of compilation), and 'lapin' is French for rabbit.


Maybe you'd include Twobit in that list: http://larcenists.org/twobit.html


I had forgotten aboout "TwoBit".

The name Larceny is a pun too btw.



I understood it was wordplay from lapin, the French word for rabbit. The way I remember it is it was a program that took an input of Lisp Assembly Programs (LAP-in). I can't find a source for this, so I may be misremembering parts of it, particularly the expansion of the acronym.


I confess to hoping this was a compiler for rabbit schemes, but no such luck. Those things are everywhere around me (near Chicago, IL) and it would have been insightful to do some reverse-engineering. Alas, their schemes shall remain mysterious.


BTW, I have Kranz's Orbit thesis on my desk. Nice and succinct!


I though it was due to the world already having Chicken Scheme and Gerbil Scheme, neither of which ends in "bit".

Edit: Rabbit seems to be older than both of those two schemes.




Consider applying for YC's Spring batch! Applications are open till Feb 11.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: