[Haskell-cafe] Please allow beginners to vocalize code. >>= :: -> &&& <- -<

Richard Kelsall r.kelsall at millstream.com
Tue Jan 8 15:36:52 EST 2008

Derek Elkins wrote:
> I don't why you think, "[t]here [is] a misconception that it somehow
> helps beginners to understand things if they are not told how to 'say'
> these strange new symbols."  If you had said, "it doesn't help beginners
> to be told how to 'say' these symbols", I would have less of an issue.

Sorry, I got a bit convoluted there. I suppose what I'm trying to
say is that I struggle when I am not given direct words to attach to
symbols. A word for the symbol allows me to read the program. Imagine
two experienced Haskell programmers on the phone, one reading a Haskell
program snippet to the other.

For example Hutton first uses the  =>  symbol on p.7

"In Haskell, every function has a type that specifies the nature of
its arguments and results, which is automatically inferred from the
definition of the function. For example, the function sum has the
following type:
Num a => [a] -> a
This type states that for any type a of numbers, sum is a function that
maps a list of such numbers to a single such number."

This is a good description, but doesn't seem a likely way for an
experienced programmer to read that statement over the phone to
somebody else. I am guessing things like

"For all Num a, list of a to a."
"Num a implies, list of a to a."

In appendix B at the back of the book I find the 'meaning' of  =>  is
'class constraint', but again this doesn't seem a likely way of 'saying'

Now supposing you were on the phone to a Haskell programmer and you
wanted to say this

f :: Int -> Int

I imagine you might say "f maps Int to Int" or "function f has type
Int to Int". Both symbols have been translated directly to words. Nobody
would say "f, colon colon, Int, dash greater than, Int".

> I don't think anyone thinks that it is helpful not to provide a reading,
> and in my experience, a reading is usually provided, directly or
> indirectly, when such things are introduced in (larger)
> introductions/tutorials/textbooks.  However, as you've already found,
> some things don't seem to have meaningful readings.  E.g. you list -< in
> the title, but the motivation of that notation has nothing to do with it
> having a clear "reading", but rather comes from a graphical perspective,
> x <- f -< y 
> I.e. that looks like an arrow pointing left with -< the tail.  That
> said, two readings are indirectly provided in
> http://www.haskell.org/arrows/sugar.html

More information about the Haskell-Cafe mailing list