In shortyes, "do z <- ..; foo" desugars to "... >>= \z -> foo"
The Haskell Report describes `do' notation in detail:
http://www.haskell.org/onlinereport/exps.html#sect3.14
Real World Haskell describes its uses:
http://book.realworldhaskell.org/read/io.html#io.bind
What is <- ? Couldn't find anything on Hoogle.
1) main = do
x <- getLine -- get the value from the IO monad
putStrLn $ "You typed: " ++ x
2) pythags = do
z <- [1..] --get the value from the List monad?
x <- [1..z]
y <- [x..z]
guard (x^2 + y^2 == z^2)
return (x, y, z)
From: http://en.wikibooks.org/wiki/Haskell/Syntactic_sugar
Do and proc notation
Sweet Unsweet
Monadic binding do x <- getLIne getLine >>= \x ->
putStrLn $ "You typed: " ++ x putStrLn $ "You typed: " ++ x
So, Example 2 desugared becomes...
[1..] >== \z -> ?
Michael
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe