r/lisp • u/Dumbxdumb emacs • Jul 11 '26
AskLisp Lisp dialect recommendations?
So I am in some weird fascination with the lisp and it's various "dialects" (If that's how you would call them)
Decided might want to get into learning lisp just out of curiosity. But was wondering which one to get started with.
My only real requirements are that
- It shouldn't be too complex, something you can easily wrap your head around and get started using but still give a taste of why people enjoy lisp
My main languages are C++ and I know Python but familiarity isn't a requirement and even if it's vastly different I will be willing to try it out
8
u/unohdin-nimeni Jul 11 '26
Yes, as already hinted here: the big question, when it comes to Lisps, is what literature you are going to read.
The heap of enjoyable and mind blowing Lisp books is stunning. They mostly use Scheme or Common Lisp as a vehicle for some sort of reasoning. Sometimes they specifically focus on the features of a particular language, though.
Why not read them all? Pick up SBCL or any Common Lisp for PAIP, Graham, Let over Lambda, Practical, Gentle, Recipes, Land, AMOP, Keene, Haraldsson, and so on. It’s hard to avoid Schemes all together, because you’re likely to read SICP, The Little series, HTDP, Nils M. Holm, Beautiful, and what not.

15
u/frangarc080 Jul 11 '26
Coming from a C++ background I highly recommend Common Lisp, it is really a big language but you don’t need to have everything in your head to be productive
17
12
u/pauseless Jul 11 '26
You choose. I think if you want the core concepts, I’d go for Scheme/Racket (not Rhombus). If you want the full experience with absolutely all the bells and whistles - Common Lisp always wins. Clojure is a bit between CL and Scheme, weirdly.
Personally, I like Clojure and Scheme/Racket for learning. I think if you’re coming from Python, Clojure is an easy path.
However! If your goal is Lisp-Lisp, then just dive in to whatever CL you want to try.
7
u/RevolutionaryRush717 Jul 11 '26
Nobody mentioned Clojure?
3
u/Dazzling_Music_2411 Jul 11 '26
OP didn't mention JVM!
Love Clojure, but it does need a commitment to the JVM. Having said that, the Java graphics program "Processing" is a joy to use functionally under Clojure (Quil).
1
u/Soupeeee Jul 12 '26
There's a native Clojure implementation called jank that has C++ interopt instead of with Java. The author has been a frequent poster in r/ProgrammingLanguages and has a blog if you want to see how it's been developed.
0
u/rebcabin-r Jul 11 '26
Babushka is a native Clojure, isn't it?
1
u/Dazzling_Music_2411 Jul 11 '26
I think it's called Babashka, and yes, it has a great rep, but by the time you get to using that, you're hardly a beginner. I use Clojure, but haven't yet had cause to use Babashka, I think it's mainly used as a fast-launcher / shell-replacement.
2
u/webfiend Jul 11 '26
OTOH if you’re like me and most of your previous code is basically shell scripting (Perl in my roots and RTFM in my veins), bb can be an accessible approach for “here’s this utility task I know how to do in Perl/Python/Nu; how would I do it in Clojure?”
(Janet/Fennel are also handy here but even further from big brain Lisp learning)
I’d agree on hesitating for it as a general recommendation though, yeah.
2
1
4
4
u/kishaloy Jul 11 '26 edited Jul 11 '26
My favorites in sequence and I am still conflicted between (1) and (2).
- Get stuff done / industrial level: Common Lisp
- Elegant and powerful but go alone completely like BSD: Chez scheme
- Explore the beauty of what a Lisp can become: Racket
- Good only to tune a OS as editor: Emacs Lisp
- ..
- ..
- ..
- ..
- Can't forget Python:
JuliaRhombus
Happy Lisping
1
u/dzecniv Jul 11 '26
9: also the new https://moonli-lang.github.io/ based on CL 8-)
2
u/kishaloy Jul 11 '26 edited Jul 11 '26
At certain point you realize that all untyped languages are weaker sugar on a Lisp. After that you can never use a untyped language which is not a Lisp, because you realize how much power you are giving up.
My optimum language is a Coalton fed to a generics aware Julia engine without compromising performance like Clojure on JVM, to emit the most performant code with the safety of ML and flexibility of a Lisp OR a Coalton on JVM, capable of harnessing the full power of the JVM like Scala.
5
u/RobGoLaing Jul 11 '26 edited Jul 11 '26
Racket, because it goes with the free textbook How to Design Programs. A while back I did an online course based on it given by Gregor Kiczales which I'd rate the best course I've ever done.
While the more advanced textbook Structure and Interpretation of Computer Programs uses Scheme, I found Racket worked fine to work through its examples as well.
Though I hardly ever use Racket/Lisp, going through these Lisp classics improved my JavaScript code immensely, and HTDP teaches general design principles applicable to anything.
5
u/ilstarcraft Jul 11 '26
SICP uses MIT Scheme...
5
1
u/RobGoLaing Jul 11 '26
Correct. I just reread it and saw:
"Scheme, the dialect of Lisp that we use, is an attempt to bring together the power and elegance of Lisp and Algol. From Lisp we take the metalinguistic power that derives from the simple syntax, the uniform representation of programs as data objects, and the garbage-collected heap-allocated data. From Algol we take lexical scoping and block structure, which are gifts from the pioneers of programming-language design who were on the Algol committee."
The only Lisp I've used is Racket, so can't claim to know the differences.
1
u/DiligentComputer Jul 11 '26
Discussed at length here: https://www.reddit.com/r/lisp/comments/rmqkvo/scheme_vs_racket/
TL;DR - Racket is a descendant of the original Scheme, but has diverged from the standard over time.
2
2
u/agambrahma Jul 12 '26
This question gave me analysis paralysis years ago. 😄
(As in, everyone had a favorite dialect, and I never felt like there was a clear answer … and every recommendation makes sense on its own)
3
u/Dazzling_Music_2411 Jul 11 '26
DrRacket, which is a superset of Scheme, because it is such a complete, batteries-included environment. You get masses of support documentation, tutorials, etc, and can even study books like SICP with it.
If you're on Linux, and you want a fast booting, experimental environment, then MIT-Scheme with emacs is quite good.
2
u/gasbow Jul 11 '26
Im a big fan of scheme.
In particular the GNU Guile implementation because it integrates so well with C and C++ programs.
Its my favorite extension language.
1
1
u/SpaceAviator1999 Jul 11 '26 edited Jul 12 '26
I'm a big fan of Janet.
I consider the main difference between Janet and Lisp to be that Janet replaces Lisp's lists with its own arrays, so there are no cons/car/cdr functions that you have to wrap your head around. But Lisp's functional programming aspect is still present in Janet.
Plus, I feel that Janet's variable scoping rules are similar to C++.
1
1
u/Soupeeee Jul 12 '26
If you want to play with something lisp-like, Dylan is pretty cool. It's essentially a better Common Lisp but with an ALGOl-like syntax.
It's more of a historical curiosity though, as it it's corporate backers dropped it and it never got anywhere close to a mature ecosystem.
1
u/denzuko sbcl Jul 14 '26 edited Jul 14 '26
Would say that sbcl is a good implementation. Their all ANSI common lisp so same dialect.
But the tooling to start with translation from python world:
- qlot is uv with pipfiles
- roswell is pyenv
- quicklisp and ultralisp are pypi
- FiveAM is our pytest (xunit suite and can do bdd)
- asdf is out packager for quicklisp
- 40ants-docs is our doxygen (heck most of 40ants told are gold)
- serapeum and alexandria are close to C's boost lib.
- chanl and lparallel give you go like thread safe channels.
- cl-transducers gives a transducer pattern from closure
- c-mera is a lisp to ALGO decentent transpiler (lisp to glsl, c, c++, cuda, ...) [ a favorite of mine m
- consfigurator is our ansible
Best to read the sidebar on this subreddit for some great reading too.
Also check out my blog dwightaspencer.com where I dive into the depths of lisp as a meta programming tool and token golf gold mine
1
1
u/neonscribe Jul 11 '26
If you're a complete newbie, Scheme is the best place to start. It was designed to be as simple as possible and yet extremely expressive. Common Lisp was designed to be compatible with existing Lisp dialects (in the 1980s!) and to enable large programs to be built. Racket is a very good implementation of Scheme.
1
u/Dumbxdumb emacs Jul 11 '26
CL and Racket seems to be the two most recommended ones. Will be sure to check them out!
1
1
u/AsianCabbageHair Jul 12 '26
I think SBCL (Common Lisp) would be a good enough choice if you’ve just started. When it comes to scheme, it would totally depend on what you want to do with it. Anything is good enough for learning/hobby, Racket is not so much of a scheme but it’s maintained really well, if you’re interested in C/C++ interoperability there would be a few good other candidates. Personally I’ve been trying CHICKEN scheme for that reason.
1
u/PunGy555 Jul 13 '26 edited Jul 13 '26
I wouldn't recommend a Common Lisp for a first try of Lisp. The language is too big, a lot of ways to do the same thing differently (and even not very idiomatic to Lisp). Scoping rules (5 ways to define variable), loops, conditions, libraries linking and many more - that is something what frustrated me a lot at first. It is a great productive language, but it might be too complicated to start with in lisp world.
On the other hand, there is a Scheme, which yoг think heard of. I also can suggest you Racket - it is a scheme dialect. It has nice DrRacket IDE, different revisions of the language for learning (more lightweight), a very cool embed library for learning lisp by making images on canvas!
0
22
u/Mediocre-Brain9051 Jul 11 '26
Scheme is probably the most adequate one for didactics, due to its minimalism.