Liam Proven wrote:
The more I read about Lisp, the more I want to
understand... but I
suspect I am too old& even in my youth I never got much past BASIC.
The only Lisp I've been able to follow code in is Dylan, and Dylan
seems to be rather moribund... :?(
JMC actually used what he called Lisp 2 in his classes, an algebraic
notation not unlike Dylan, very Algol-like in flavor. Not surprising,
when you think of the relative ages of Lisp and Algol.
I've done a little Googling and from the few scant mentions I can
find, I can't, TBH, see much different myself, as an outsider looking
in. I understand the namespace distinction (I think) but the syntax
looks nigh-identical from the few snippets I found.
Many functional programming texts depart from pure S-expressions. I
wonder if McCarthy's teaching notation was like that used by Peter
Henderson in "Functional Programming - Application and
Implementation"[1]. This is another good text on list/recursive topics,
but because it introduces new (simple) notation, may be needlessly
confusing if you just want to learn Scheme.
...
The way I *really* learned Lisp was by looking at
toy implementations,
especially one written in Pascal. That was back in the early or mid 1980s,
way before the Web, so I don't remember where it was published. I read the
paper in the Math library @ Stanford (which no longer has a lot of the old
working papers collection on paper, just on fiche where it's a lot harder
to browse). If you like, I can send you the source to my variant, or make
it publicly readable on the Toad-1 at the museum.
Hmmm. Interesting. I wonder if I can remember enough BBC BASIC to
implement a very crude Lisp in it. :?D
Wouldn't be my weapon of choice, but if you really love BBC BASIC, then
go for it. Maybe you could actually compile to BASIC source (& even
exploit the inline 6502 assembler) :)
The two books I cited deal with implementation, which might help. There
is also this nice implementation walkthrough (in Perl, but that's
probably a fair bit less painful than BASIC :):
http://billhails.net/Book/front.html
If you get access JMC's 1960 paper in ACM,
read it. The APPLY function
which Paul Graham skips in his precis is a wonder in itself, and is the
reason that LISP 1.5 and InterLISP are "evalquote" while PDP-1 LISP,
MACLISP, CL& Scheme are "eval": The evaluation loop in the former goes
(print (apply (read) (read)))
vs. (print (eval (read)))
Enough for this evening.
Many thanks! Lots of food for further reading there.
I think the Graham paper is a good starting point, as it's probably less
academic than McCarthy's. Also, the first pages of "Lisp in Small
Pieces"[2] cover the same material in slightly more detail.
May I ask: what do folk think of the quote I've often seen cited:
...
I find programming language and operating system car/{whatever}
analogies add little to the conversation :)
--Toby
[1]
http://www.abebooks.com/servlet/SearchResults?an=henderson&sts=t&tn…
[2]
http://www.abebooks.com/servlet/SearchResults?sts=t&tn=Lisp+in+Small+Pi…