s1 1 = 1 s1 n = n + s1 (n - 1) p1 1 = print 1 p1 n = do {p1 (n - 1); print n} p2 1 = print 1 p2 n = p2 (n - 1) >> print n p3 1 = putStr "1" p3 n = p3 (n - 1) >> putStr (show n) p4 n = p3 n >> putStrLn ""