3 ms·
You don't need to "know Lisp" in the sense of being proficient, but you need to be familiar with s-expressions. Once you grok s-expressions, the rest is "just"
by wonderzombie 13y ago
You don't need to "know Lisp" in the sense of being proficient, but you need to be familiar with s-expressions. Once you grok s-expressions, the rest is "just" grokking a bunch of functional idioms not specific to Clojure.
Actually if you're familiar with Haskell then Clojure idioms should be more familiar to you. Clojure's datatypes are (almost all) immutable, driving it towards a lot of functional idioms you see in such as Haskell or maybe Scala.
- catnaroek 13y agoImmutability is not the whole story. There is also parametric polymorphism, algebraic data types and pattern matching (best case analysis tool ever), type classes for type constructors (not just types), etc.
- wonderzombie 13y agoOf course. That said, Clojure doesn't have those, given that it has a dynamic type system and destructuring instead of pattern matching (not as clean, IMHO), so a comparison to Haskell in this respect is less useful.
- catnaroek 13y agoMy point was that it is perfectly possible to be familiar with Haskell and find Clojure (and Lisps in general) puzzling. On the other hand, I would be genuinely surprised if someone familiar with Haskell were unable to pick up ML, or vice versa.
- dkersten 13y agoIf you want pattern matching, check out core.match
- catnaroek 13y agoWhere is the exhaustiveness checking?