3 ms·
Lisp isn't just a concept, it's also a family of implementations. The two significant branches are Scheme and Common Lisp. The only thing they have in common is
by ane 11y ago
Lisp isn't just a concept, it's also a family of implementations. The two significant branches are Scheme and Common Lisp. The only thing they have in common is using parentheses - they're about as different from each other as JavaScript and C.
Scheme is more functional programming oriented, Common Lisp is less so. Scheme is very minimalist, it's most recent standard contains only about 20 syntax definitions! Unfortunately this transformed Scheme into a concept from an implementation. Compare this to CL, which has just about everything and the kitchen sink, and is more of a "concrete" language.
To choose a Lisp is to choose an implementation. I'd recommend playing with all of them. Common Lisp, a Scheme (CHICKEN or Guile), or the "recent" ones like Clojure and Racket. Racket is very much a Scheme - it used to be called PLT Scheme - and has a bunch of PLT superstars building really cool stuff with it.
Clojure, the JVM-based Lisp, has more in common with Common Lisp than any other, but embodies a strong philosophy about identity and value. It has a lot of common with Haskell in that regard, supporting immutable data structures and STM right out of the box. It also has really cool ideas like transients [1], transducers [2] and protocols [3], features which have since crept into other languages.
Clojure is probably the most popular right now, and its ecosystem is growing every day, and can be used for building serious stuff. This doesn't mean you can't build cool stuff with other Lisps! CHICKEN Scheme has a great package ecosystem, so does Racket, Guile lags behind, and for Common Lisp there's a recent "State of the Ecosystem" article[4] that summarizes its ecosystem.
"Lisp is worth learning for the profound enlightenment experience you will have when you finally get it; that experience will make you a better programmer for the rest of your days, even if you never actually use Lisp itself a lot."
-- Eric S. Raymond
[1] http://clojure.org/transients http://clojure.org/transients
[2] http://clojure.org/transducers http://clojure.org/transducers
[3] http://clojure.org/protocols http://clojure.org/protocols
[4] http://eudoxia.me/article/common-lisp-sotu-2015/ http://eudoxia.me/article/common-lisp-sotu-2015/