Various versions of the Lisp In Small Pieces interpreter -- in Coffeescript! #complete
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
Elf M. Sternberg ec9cdfb4a1 [feat] Chapter 5, first compiler. Not doing the rest... 8 years ago
bin Coffeescript attempt. 8 years ago
chapter-lambda-1 [feat] The interpreter works and all the tests run without crashing. 8 years ago
chapter1 [feat] Chapter 4 is done. 8 years ago
chapter3 [feat] The interpreter works and all the tests run without crashing. 8 years ago
chapter3g Beginning Chapter 4. 8 years ago
chapter4 [feat] Chapter 4 is done. 8 years ago
chapter5 [feat] Chapter 5, first compiler. Not doing the rest... 8 years ago
docs [feat] The interpreter works and all the tests run without crashing. 8 years ago
extras [docs] Including Jenkins configuration file 8 years ago
test [feat] Chapter 5, first compiler. Not doing the rest... 8 years ago
.gitignore [feat] Lambda-only interpreter. NOT WORKING. 8 years ago
LICENSE Coffeescript attempt. 8 years ago
Makefile [refactor] Struggling to get self-evaluating components working. 8 years ago
README.md [docs] Updating the README to be more... well, just *more* 8 years ago
coffeelint.json [test] Coffeelint configuration file. 120 character line length is okay by me. 8 years ago
package.json [test] Added Coffeelint to list to of features. 8 years ago

README.md

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 one more) I decided Christian Quinnec's Lisp In Small Pieces 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.

See the LICENSE file.