Hacker News new | ask | show | jobs
by throw149102 1298 days ago
Anyone have any recommendations (books, courses, videos, etc.) on learning LISP? I've been intrigued by it and want to integrate it into a game I'm building as a development tool but not sure where to start on learning the language.
4 comments

For Common Lisp, there are several free books available:

- Practical Common Lisp (aimed at people who know how to program in a more mainstream language already) [1]

- Paradigms in Artificial Intelligence Programming (my personal favorite) [2]

- Common Lisp: A Gentle Introduction to Symbolic Computation (aimed at absolute beginners of programming) [3]

I highly recommend the r/lisp Reddit community. Reddit as a platform has its issues, but the Common Lisp community there is very responsive and very helpful.

Lastly, you might be interested in checking out Kandria [4], a game written entirely in Common Lisp, to be released imminently on Steam.

[1] https://gigamonkeys.com/book/

[2] https://github.com/norvig/paip-lisp

[3] https://www.cs.cmu.edu/~dst/LispBook/

[4] https://store.steampowered.com/app/1261430/Kandria/

> you might be interested in checking out Kandria

Along those lines there is a classic side scroller with mouse aiming called Abuse[1] that was written in Lisp. The source code is in the public domain now[2].

[1] https://en.wikipedia.org/wiki/Abuse_(video_game)

[2] https://github.com/darealshinji/abuse-game

Is there a reason why some well-known Lisp hackers are Japanese? I noticed the devs of Kandria (radiance, etc.) as well as Fukamachi (woo, clack, mito, etc.), and am wondering what led to that kind of geographical distribution.

  >  Is there a reason why some well-known Lisp hackers are Japanese?
Perhaps, they trained in the 5th gen computing environment begun in 1982 by Japan's MITI (Ministry of International Trade and Industry).

  "It aimed to create an "epoch-making computer" with supercomputer-like
   performance and to provide a platform for future developments in 
   artificial intelligence."
https://en.wikipedia.org/wiki/Fifth_Generation_Computer_Syst...
Because it is a large country (Population = 124M) and it had already in the past a Lisp community.

Many years ago at an event I met people from a commercial Lisp vendor in California. They had also business cards in Japanese, because a bunch of customers came from there.

That's a broad question, to be honest.

Especially today, since Lisp rather than being a single thing, is a family of languages. I mean, there's some truth to "JavaScript being a Lisp", so you can see that it's a bit open ended.

If you're looking for an embedded Lisp, then I would concentrate on finding one that simply appeals to you. That is, find one that integrates easily, or has a particular feature that you like, or any of many things that may catch your eye.

Once you pick one, then simply "learn that". Consider GIMP originally started by integrating SIOD (Scheme in One Defun), which is a simple Scheme interpreter. They have since moved on to TinyScheme (of which I'm unfamiliar).

But, SIOD has been around forever. SIOD begot SCM which begot GUILE, which is specifically designed to be embedded. It's also pretty large.

ECL, which stands for Embedded Common Lisp is, well, a Common Lisp. Scheme and Common Lisp are both Lisps, but quite different from each other.

That's why rather than saying "pick this", simply find one you like and learn that. The landscape is wide and rich.

I always recommend Make a Lisp [0]. It's a guided experience creating a Lisp in whatever language you already know. If you go through all the steps, you'll have created a self hosting Clojure-like Lisp.

For me implementing a Lisp piece by piece helped me better understand its core ideas.

[0] https://github.com/kanaka/mal

Thanks for reminding me about MaL. I tried years ago, but got hung up on a technicality early. Need to try it again, such a great project.
MIT OpenCourseWare has 6.001, SICP. Watching the '80s videos was how I got started with Scheme. Though on the book front I would definitely recommend starting with Concrete Abstractions before SICP.

With Common Lisp I think the standard road is Gentle Introduction followed by Practical CL followed by PAIP.