Are there pronounceable names for common Haskell operators?

Thomas Levesque picture Thomas Levesque · Oct 12, 2011 · Viewed 15.8k times · Source

I'm reading Learn You a Haskell for Great Good, and I never know how to pronounce the Haskell operators. Do they have "real" names? ?

For instance, how do you read aloud an expression like this one?

Just (+3) <*> Just 9

I know that >>= is "bind", but what about the others? Since Google doesn't take non-alphanumeric characters into account, it's kind of hard to do an efficient search...

I realize you can create your own operators, so of course not all operators can have names, but I expect that the common ones (e.g. those defined in Applicative or Monad) must have names...

Answer

fuz picture fuz · Oct 12, 2011

Here is how I pronounce them:

>>=     bind
>>      then
*>      then
->      to                a -> b: a to b
<-      bind              (as it desugars to >>=)
<$>     (f)map
<$      map-replace by    0 <$ f: "f map-replace by 0"
<*>     ap(ply)           (as it is the same as Control.Monad.ap)
$                         (none, just as " " [whitespace])
.       pipe to           a . b: "b pipe-to a"
!!      index
!       index / strict    a ! b: "a index b", foo !x: foo strict x
<|>     or / alternative  expr <|> term: "expr or term"
++      concat / plus / append
[]      empty list
:       cons
::      of type / as      f x :: Int: f x of type Int
\       lambda
@       as                go ll@(l:ls): go ll as l cons ls
~       lazy              go ~(a,b): go lazy pair a, b