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