
The Roots of Lisp - prakash
http://www.paulgraham.com/rootsoflisp.html
======
fogus
One note of interest about pg's source code is that the dot functions (and.,
pair., etc...) are based in the host Lisp and not `eval.`. The implications
are that pg's functions can take advantage of lexical scope, whereas
McCarthy's original Lisp was dynamically scoped. This will make a huge
difference if you are so inclined to use pg's code to do some hardcore Lisp
anthropology. I did so a few years back using pg's code and it was a blast. I
then wrote a small Lisp runtime with dynamic scope
(<http://github.com/fogus/lithp>) to do the same exercise and it turned out to
be a very different experience. It's worth trying it out to gain a full
appreciation for the tools the Lisp pioneer's had to work with.

Thanks for linking this article -- it's one of my favorites.

------
danblick
"The Roots of LISP" include Herbert Simon and Allen Newell too. They co-
invented the linked list (once called "NSS memory") in the mid 1950s, setting
the stage for LISP and earning them a Turing award (McCarthy got his own).
They were founders of AI and implemented some really neat software like the
General Problem Solver. See Simon's "The Sciences of the Artificial" or his
Nobel prize lecture, and "Unified Theories of Cognition" by Newell.

------
prakash
link to complete article in ps:
<http://lib.store.yahoo.net/lib/paulgraham/jmc.ps>

------
jbert
Typo/error on page 4 (of postscript version)?

((lambda (f) (f '(b c))) '(lambda (x) (cons 'a x)))

afaics, the 2nd lambda shouldn't be quoted.

------
10ren
htmlized
[http://google.com/search?q=cache%3Ahttp%3A%2F%2Flib.store.ya...](http://google.com/search?q=cache%3Ahttp%3A%2F%2Flib.store.yahoo.net%2Flib%2Fpaulgraham%2Fjmc.ps)

 _danger_ : possible syntax loss

------
pwmanagerdied
He states that Python sort-of has a symbol type like Lisp, but that there
isn't a syntax for it. Could someone help me understand what he's talking
about?

~~~
ced
Strings. Python allows you to manipulate an object's structure through the
__dict__ field (as far as I can remember), and dir() also returns strings.
They are ad hoc symbols.

~~~
pwmanagerdied
I know that, but there already exists a syntax for strings. I thought he was
implying something more.

