Honza Pokorný

A personal blog

Haskell vs Clojure syntax

Clojure has virtually zero syntax. What I mean by that is that all structures look the same: the first item in a list is the function and the rest are the arguments. This is true for variable assignment, if statements, data structures and functions themselves.

(+ 1 2)

(defn greet [name]
  (str "Hello " name))

(def user-count 334)

However, before you can do anything useful in Haskell, you must learn all kinds of crazy syntax: function definitions, pattern matching, do forms, functors, monads, typeclasses, …

(*) <$> Just 2 <*> Just 8

Nothing >>= \x -> return (x*10)

instance Applicative Maybe where
    pure = Just
    Nothing <*> _ = Nothing
    (Just f) <*> something = fmap f something

This is why I find Haskell extremely hard to learn. It’s not because of monads, recursion or functional programming concepts. It’s because of the huge amount of special syntax. And you need to learn a lot of it before you can do something useful.

This article was first published on February 12, 2013. As you can see, there are no comments. I invite you to email me with your comments, criticisms, and other suggestions. Even better, write your own article as a response. Blogging is awesome.