Books for Learning


#1

What book would you recommend for learning Lisp?
What about Emacs with uLisp?
TIA


#2

As a starting point for someone who is already familiar with programming in another language I’d highly recommend Paul Graham’s “ANSI Common Lisp”. Here’s his description of the book on his website:

ANSI Common Lisp

You can pick up copies second hand, or if you search on Google you can find PDFs for free download, but they seem to be scans of the printed book.


#3

Paradigms of Artificial Intelligence Programming: Case Studies in Common Lisp by Peter Norvig (1992)

You could just skip the AI parts, focus on the Lisp related content.


#4

Hello,

In addition to the books mentioned earlier, I would recommend exploring the following learning oriented resources:

How to Design Programs, Second Edition (Racket based ) --> Beginners

Structure and Interpretation of Computer Programs (Scheme Based) --> Intermediate to Advance level (video lectures)

Lisp in Small Pieces --> Advance level.

Practical Oriented:

The following books include tons of examples:

Practical Common Lisp --> Beginners

Land Of Lisp, earn to Program in Lisp, One Game at a Time! --> Beginners ( videos)

Best Regards


#5

One thing to keep in mind is that Lisp is a family of programming languages.
A family being something like C,C++,C#, Java, Rust being sort of in the same group of languages.

They’re all incompatible with each other to varying extents and in common usage there are probably around 10 or 15 dialects of Lisp. Dialects have their own syntax, where implementations share the same language spec.

For the sake of learning uLisp I’d lean most towards Common Lisp, or Emacs Lisp (which is probably a stretch).
But there are things early on which won’t quite map like list splicing and evalquote.

I would stay away from dialects like Clojure, Hy, Fennel, Racket, Scheme, Guile, NewLisp, and AutoLISP.
They’re a different branch on the Lisp family tree.

uLisp in particular I would say is most like Common Lisp.
I would say uLisp is a pocket sized Lisp inspired by Common Lisp.


#6

I would say uLisp is a pocket sized Lisp inspired by Common Lisp.

More than that, uLisp is designed to be a subset of Common Lisp, so you can take a uLisp program and run it under Common Lisp.


#7

Shameless remark

I actually think uLisp is a lot more like that what Common Lisp “should” have been. If you look, historically, all the Lisps were small, “Scheme-like” if you will (Scheme being arguably CLOSER to the “original” Lisps from the 1960s), until Common Lisp appeared and became so bloated that it basically “killed” the language (by making it nearly impossible to have a complete and performant implementation in a cost-effective way). uLisp is a lot more like the idea of a “small” language that allows expressiveness, without getting in the way.

Well, as it has not been mentioned but is actually very nice:

And if I may remark, on my YouTube channel, I am making from time to time Lisp book reviews, e.g. this:

of, and I tell you this is cheap for the very nice book, this:

https://www.amazon.com/Accessible-Introduction-Common-Functional-Programming-ebook/dp/B014T4WKJG

In general, you are having really nice books in the 1980s, but they are rarely available digitally, e.g. Harrison’s and Deborah Tatar’s intros I am also very fond of, but can’t get you a link online.


#8

All the Lisps were most certainly NOT small.
Lisps from the '60s and '70s were sometimes large languages with a lot of odds and ends because they grew up in an era of heavy imperative programming relatively close to the bare metal. Here is one of them, InterLisp. You can even try it live if you look for the Medley InterLisp project. Let’s also look at MacLisp which is no featherweight. Some of these Lisps were receiving funding from DARPA so you can imagine they had pressure to grow to meet the “AI” needs of the time.

It’s tempting to think that Scheme was originally simple and all the complexity of Common Lisp grew from it but Common Lisp grew from taking some of the best ideas from its parent dialects.