Please allow beginners to vocalize code. >>= :: -> &&& <- -<

A tip for people explaining Haskell to beginners: The acts of reading and speaking are closely integrated in the brain. When I am unable to 'say' something it is much more difficult to 'read' and absorb the text. There appears to be a misconception that it somehow helps beginners to understand things if they are not told how to 'say' these strange new symbols. Certainly for me, and I would guess for most people, this idea is completely wrong. When I 'read' a new operator such as >>= I want know how to 'say' it. I don't mean that posts on Haskell-Cafe should do this, but books and articles aimed at people who haven't used Haskell before should always vocalize the symbols as soon as they are introduced. On a related note, if there isn't already, it would be nice to have a page in the wiki that gives good ways of vocalizing the operators and vocalizing them in simple code snippets. I might get round to doing this sometime, maybe just a table something like this : Operator Formal Informal -------- ------ -------- :: has type -> maps to to example f :: Int -> Int f has type Int to Int Or, to descend into trivia, a subtle distinction might be usefully made between = and == f i = 54 * i f i is 54 times i x == 27 x equals 27 Richard.

On Tue, 8 Jan 2008, Richard Kelsall wrote:
A tip for people explaining Haskell to beginners:
The acts of reading and speaking are closely integrated in the brain. When I am unable to 'say' something it is much more difficult to 'read' and absorb the text. There appears to be a misconception that it somehow helps beginners to understand things if they are not told how to 'say' these strange new symbols. Certainly for me, and I would guess for most people, this idea is completely wrong. When I 'read' a new operator such as >>= I want know how to 'say' it.
'>>=' is spoken "bind"
I don't mean that posts on Haskell-Cafe should do this, but books and articles aimed at people who haven't used Haskell before should always vocalize the symbols as soon as they are introduced.
On a related note, if there isn't already, it would be nice to have a page in the wiki that gives good ways of vocalizing the operators and vocalizing them in simple code snippets. I might get round to doing this sometime, maybe just a table something like this :
Got idea, please go ahead! I suggest categories "Style" or "Syntax".
Operator Formal Informal -------- ------ -------- :: has type -> maps to to example f :: Int -> Int f has type Int to Int
Is a symbol-by-symbol translation sensible? What about "f maps from Int to Int", "plus maps Int to a function, which maps Int to Int"

Henning Thielemann wrote:
On Tue, 8 Jan 2008, Richard Kelsall wrote: ... '>>=' is spoken "bind"
...
On a related note, if there isn't already, it would be nice to have a page in the wiki that gives good ways of vocalizing the operators and vocalizing them in simple code snippets. I might get round to doing this sometime, maybe just a table something like this :
Got idea, please go ahead! I suggest categories "Style" or "Syntax".
Operator Formal Informal -------- ------ -------- :: has type -> maps to to example f :: Int -> Int f has type Int to Int
Is a symbol-by-symbol translation sensible? What about "f maps from Int to Int", "plus maps Int to a function, which maps Int to Int"
Thank you. I've put a primitive page up here http://haskell.org/haskellwiki/Pronunciation under category syntax. Obviously it needs more work, but maybe it will act as a bit of grit in the oyster. Richard.

On Tue, 2008-01-08 at 17:14 +0000, Richard Kelsall wrote:
Henning Thielemann wrote:
On Tue, 8 Jan 2008, Richard Kelsall wrote: ... '>>=' is spoken "bind"
...
On a related note, if there isn't already, it would be nice to have a page in the wiki that gives good ways of vocalizing the operators and vocalizing them in simple code snippets. I might get round to doing this sometime, maybe just a table something like this :
Got idea, please go ahead! I suggest categories "Style" or "Syntax".
Operator Formal Informal -------- ------ -------- :: has type -> maps to to example f :: Int -> Int f has type Int to Int
Is a symbol-by-symbol translation sensible? What about "f maps from Int to Int", "plus maps Int to a function, which maps Int to Int"
Thank you. I've put a primitive page up here
http://haskell.org/haskellwiki/Pronunciation
under category syntax. Obviously it needs more work, but maybe it will act as a bit of grit in the oyster.
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. 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

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

Am Dienstag, 8. Januar 2008 21:36 schrieb Richard Kelsall:
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 would say: “f double-colon Int arrow Int”. Best wishes, Wolfgang

Wolfgang Jeltsch wrote:
Am Dienstag, 8. Januar 2008 21:36 schrieb Richard Kelsall:
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 would say: “f double-colon Int arrow Int”.
and so we could have several columns, for exmple: symbol symbol-pronunciation meaningful-pronunc. definition-term -> arrow to function (except that it's used in lots of different places in syntax... function type, lambda, case at least) ~Isaac
participants (6)
-
Albert Y. C. Lai
-
Derek Elkins
-
Henning Thielemann
-
Isaac Dupree
-
Richard Kelsall
-
Wolfgang Jeltsch