diff --git a/README.md b/README.md index 5adb4b7..9621afb 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,37 @@ -Not much to see here. Just practicing a few things. If you're -expecting miracles, this isn't the place for it. +# A Collection of Interpreters from Lisp In Small Pieces, written in Coffeescript + +## Purpose + +I don't know Lisp, so I figured the correct place to start was to write +my own interpreter. After buying five different textbooks (*The +Structure and Interpretation of Computer Programs*, aka "The Wizard +Book", Friedman's *The Essentials of Programming Languages*, *Let over +Lambda*, *On Lisp*, and finally *Lisp In Small Pieces*, I decided the +last one gave the clearest step-by-step introduction. + +Since I didn't know Lisp, my task was to translate what Quiennec wrote +in his book into a language I *did* know: Javascript. Well, +Coffeescript, which is basically Javascript with a lot of the +syntactical noise removed, which is why I liked it. + +## Usage + +I don't know if you're going to get much out of it, but the reader +(which I had to write by hand, seeing as I didn't *have* a native Lisp +reader on hand in my Javascripty environment), and each interpreter has +a fairly standard test case that demonstrates that each language does +what it says it does: you can do math, set variables, name and create +functions, and even do recursion. + +## Notes + +chapter-lambda-1 is not from Lisp In Small Pieces. It is a primitive +CPS interpreter built on top of the interpreter from LiSP Chapter 1, +using techniques derived from a fairly facile reading of +Lisperator's "Implement A +Programming Language in Javascript." But it was fun. + +## LICENSE AND COPYRIGHT NOTICE: NO WARRANTY GRANTED OR IMPLIED + +See the LICENSE file. +