Hacker News new | comments | show | ask | jobs | submit login

I went through the same as you (except replace PHP with C#), so here's what I did. It echoes a lot of the thoughts mentioned already:

To learn "lispiness", functional programming, and get a feel for the computational approach to programming, read The Little Schemer and The Seasoned Schemer. Also watch the SICP lectures (http://www.swiss.ai.mit.edu/classes/6.001/abelson-sussman-le...) and if you're ambitions, read the book (http://mitpress.mit.edu/sicp/). Doing these things will help keep you from writing PHP in Lisp.

To put it into practical perspective and learn the nuts and bolts of modern common Lisp, read Practical Common Lisp (http://www.gigagmonkeys.com/book).

If you read PCL, you will run into Emacs and SLIME (the generally preferred [NO FLAMES, PLEASE. I KNOW VI IS AWESOME TOO] open source way to edit Lisp files). I wrote some resources to help with that:

http://www.pchristensen.com/blog/articles/public-beta-open-f...

http://www.pchristensen.com/blog/articles/reference-for-the-...

I'm surprised no one has mentioned PAIP (Peter Norvig's Paradigms of Artificial Intelligence Programming). It's half AI book, half tutorial on Lisp programming and Lisp style. It's a good read with lots of example programs written in good Lisp Style.

There are three hurdles people usually run into when learning Lisp:

a) the language looks different - this goes away with practice and familiarity. It starts looking normal fast. The parentheses are a bit tough to manage unless you use a capable editor, which leads to:

b) Emacs is different - really powerful, fun to use, but it takes investment in learning. It's really tempting to quit when starting, but worth getting over the hump. Once you do that:

c) the way of thinking is different in Lisp - Lisp seems a little awkward to use until you get (don't need to master them, just get the idea) the following ideas: 1) code can be manipulated as data because the syntax is so simple, 2) creating your own syntax (using macros - code that writes code) means that you can express your program in a way that closely matches the problem you're trying to solve. Some good articles to help get these points are:

http://www.defmacro.org/ramblings/lisp.html

http://www.defmacro.org/ramblings/fp.html

Don't worry if you don't get these "big picture" things at first, they click at some point and everything makes a lot more sense. You can speed that up by putting a lot more Lisp in your head in the meantime.

Good luck!




thank you! One of the best advices I've ever read on Lisp. Once again, thank you.




Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | DMCA | Apply to YC | Contact

Search: