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 |