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'
it.
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
_______________________________________________
Haskell-Cafe mailing list
[email protected]
http://www.haskell.org/mailman/listinfo/haskell-cafe