Hacker News new | ask | show | jobs
by samg_ 5324 days ago
For me, one of the biggest obstacles to understanding lots of Haskell code is opaque infix operators.
2 comments

Fortunately it's easy to look them up: http://haskell.org/hoogle

Enter any operator or other name, no matter how crazy the characters involved, and it'll find it if it's in the standard library. This contrasts with resorting to Google to look things up in most languages and despairing because it thinks your burst of punctuation (which is the whole point of the query) is noise.

There aren't that many of them in the Prelude and common libraries.

Besides the standard arithmetic ones, only ones I can think of are the "fish" operators, composition dot, and a few arrows.

Did you try to learn what they mean, or did you give up earlier than that?

also in Data.List (which is a fairly common import) there are a few, like (\\) which is list difference ([1, 2, 3, 4, 5, 6] \\ [1, 3, 6] == [2, 4, 5]), and I can't really think of any others.

There aren't really that many, though some modules will abuse them. The standard ones make sense.

To be precise: cons (:), bind (>>=), 'constant bind' (>>), 'flipped bind' (=<<), compose (.), apply ($), strict apply ($!), append (++), and subscript (!!).
I had never seen $! before, of course it's obvious what it does if you know ! and $. There are patterns like this throughout the operators.

There are also the applicatives <$> <*> <$ etc.