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

Is there any old or new Lisp variant with excellent, beginner friendly (or even loving) documentation?



Racket might be the best bet, especially since it comes with a graphical IDE - Emacs is a big stumbling block for beginners. Racket also has lots of tools that make it fun and practical for learners (e.g. creating static websites, simple GUI applications). Things like this seems like the best way to learn without getting bored or frustrated: https://docs.racket-lang.org/quick/


It depends on the kind of beginner. GNU Emacs has a built-in tutorial to get started on using the editor. After that, there's an introduction to Emacs Lisp as part of the info documentation in most packaged versions of Emacs. Extending Emacs is as practical a way to learn Lisp as others.


https://janet.guide/ this document can definitely be described as loving.


Check out Conrad Barski's Land of Lisp: http://landoflisp.com/


I wouldn't recommend Land of Lisp for beginners. It assumes a lot of basic Lisp knowledge and diverges from a lot of convention. If you're just starting out on your Lisp journey I'd recommend Touretzky Common Lisp: A Gentle Introduction to Symbolic Computation, which the author has a PDF of online for free.

https://www.cs.cmu.edu/~dst/LispBook/


I worked through the first 9 chapters of the Touretzky book as a preparation for PAIP recently. It's very thorough. If you work through the exercises in the book, you'll learn a lot.


there's a reason why people on forums and chans consistently recommend land of lisp over other books, it's deliberately imperfect in a way which appeals to a certain kind of young hacker's mind. it doesn't assume basic lisp knowledge, it assumes you're going to type the program in without understanding and then figure it out from exploration. it also assumes that you won't understand the whole program immediately or even after reading the whole book. it's a different didactic approach, and is modeled after author's personal experience of learning how to program by typing BASIC programs from magazines. as such the programs are deliberately "misarchitected", they are somewhere between scripts and hacks that present a variety of ways in which common lisp the standard allows you to solve this or that problem. they are also designed to be "tasty", compact and quirky, as opposed to well structured, plodding and dogmatic. they are lifted directly from a wizard's laboratory and they invite play.

by comparison touretzky is a college level slog, solid, dependable coursework, that takes you over all the proper subject matter in a way that's certain to be approved by any computer science department committee, but that fails to create any sort of motivation to engage.


I second Emacs Lisp. Call `emacs -Q` (to open it without an init) and press enter. Emacs should have started with the default splash screen open and the cursor over the link to the tutorial. Read the tutorial and understand the basics of Emacs.

Next, read An Introduction to Programming in Emacs Lisp. It's a lovely book and fun to read: https://www.gnu.org/software/emacs/manual/html_node/eintr/in...

Learn to read and work with Lisp by reading the Emacs source code and playing with it.

Check out the Evolution of Emacs Lisp. It's a neat little Lisp! https://dl.acm.org/doi/10.1145/3386324

Emacs has the best documentation and documentation system ever made. Learn C-h f, C-h v, and friends, as well as the info system and the power of indexes.

I hope you find joy and wonder exploring Emacs and Emacs Lisp like so many others have for nearly 40 years!


Emacs Lisp is known for its great documentation, but I bet you're not asking about that. Try Fennel - it's a zero-overhead Lisp->Lua compiler. 'Zero-overhead' means that Fennel compiles directly to Lua without adding any extra runtime costs or abstractions beyond those present in standard Lua, ensuring Fennel code runs as efficiently as native Lua code. It has a relatively small set of features and is a very lovely language. I use it for dealing with things that need Lua - Hammerspoon, AwesomeWM, Neovim, etc. I jokingly call Fennel "the best Lua formatter" because Fennel code looks much more compact, cleaner, and easier to reason about than Lua. Lua syntax is weird, and I can never figure out how to format it for the best readability; standard tools and formatters rarely help here, sometimes making things even worse. The problem I almost never had with Fennel.


Can you share an example of Fennel with AwesomeWM?


There are plenty: https://github.com/search?ref=simplesearch&q=language%3A%22F...

Here's mine, https://github.com/agzam/awesomewm.d/blob/main/src/_init.fnl

Beware though, I'm not highly experienced in using and configuring Awesome (especially for beautification), the code is not meant to be shared and it has tons of dirty parts (result of my experimentation), I only built what I needed for my personal use.

Bigger (more public) project built on Fennel is https://github.com/agzam/spacehammer It's for Hammerspoon though, and my guess you're using Linux, not Mac.

One of the aspects I still haven't figured out is the "proper Fennel REPL", it makes certain things less joyful to write or troubleshoot, but even without it, I see some benefits in using Fennel instead of Lua - it's more compact, more FP-oriented, has macros, and it's a Lisp - I can use structural editing.



Plus the community spec, of course: https://cl-community-spec.github.io/pages/index.html


R6RS has a book that describes everything simply except for setting up the interpreter. [1]

Racket has all of that and everything else you need to get started like tooling and modules. [2]

Both lisps are no nonsense scheme variants.

[1](https://www.scheme.com/tspl4/) [2](https://racket-lang.org)


I was going to suggest Racket, too. Its documentation is some of the best I've ever come across. It doesn't hurt that it's beautiful, too. I smile every time I use Racket or its documentation.



Sicp for scheme




Consider applying for YC's Spring batch! Applications are open till Feb 11.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: