News for hackers. Stuff that matters.
Re:History of Lisp by strlen on Wednesday June 05, 2013 @04:15PM (#5828279)
Paul Graham has a great article on this:

http://www.paulgraham.com/rootsoflisp.html

http://lib.store.yahoo.net/lib/paulgraham/jmc.ps (I noted Preview.app was having transient issues loading this specific postscript file, so I converted it to pdf -- http://behemoth.strlen.net/~alex/jmc.pdf )

Most important, here's the code a Lisp interpreter in Lisp:

http://ep.yimg.com/ty/cdn/paulgraham/jmc.lisp

I think that's the root of what made Lisp different: building a bootstrap implementation in another language was not difficult(1), so implement more complex language features in Lisp itself was possible.

If you take this further, it's quite a powerful concept: since even fairly primitive language features are implemented in a high-level and you can manipulate the AST much like you can manipulate any other data structure, you can change the language in non-trivial ways to suit your problem.

Chapters 4 and 5 of SICP demonstrate this in detail and introduce metalinguistic abstraction not only as a powerful technique in it of itself, but as a technique for teaching students about many other aspects of computer science (introducing a register-based virtual machine, compilation, and garbage collection -- all without leaving a higher-level language):

http://mitpress.mit.edu/sicp/full-text/book/book-Z-H-4.html#...

(1) Shameless plug: here's my own implementation in OCaml based in part on jmc.lisp by pg and on a C implementation by another HNer -- https://github.com/afeinberg/ocaml-tinylisp

There are no comments on this comment yet.