[ 1 .. 3 ] >>= \ x -> [ 1 .. x ] >>= \ y -> return (x*y)
do { x <- [ 1 .. 3 ] ; y <- [ 1 .. x ] ; return (x*y) }
(d. h. das Semikolon wird zu >>=)
>>=
durch Layout-Regel implizite Semikolons:
main = do cs <- readFile "foo.bar" putStrLn cs