3 ms·
Caveat: I'm not an expert in any of it. I've played around with Guile Scheme, Common Lisp, and did a (small) real-world work project in Clojure. I mean, Common
by ragnese 6y ago
Caveat: I'm not an expert in any of it. I've played around with Guile Scheme, Common Lisp, and did a (small) real-world work project in Clojure.
I mean, Common Lisp is perfectly fine. And if you want to use it to write real apps, it's a good choice. Especially if you will have dependencies to manage (see quicklisp).
There's just a few little things that I don't like as much about it.
There's a holy war about "lisp-1 vs lisp-2 (or lisp-n, really)". Not much point in debating that, but scheme is a lisp-1 and CL is a lisp-2.
I like that schemes tend to use #f for false and #t for true, whereas CL just uses nil for false, and for empty-list, and anything else for true (which is usually the symbol t in practice).
I like the way things are named more in Schemes: map vs. mapcar, number? vs. numberp, etc.
I like that the Scheme standards guarantee tail-call-optimization. I believe all popular CL implementations do implement it, but it's not required by the standard.
CL has the ugly loop macro, and Schemes emphasize recursion more (also has `do`, though).
Schemes have "hygienic macros" which I like much more than unhygienic macros.
These things mostly don't matter, honestly. It's all bikeshedding. Lisps and Schemes are very very similar and also very different than most other languages. You can't go wrong with either.