> lines' :: String -> [String]
> lines' [] = []
> lines' (x:xs) = case x of
>                   '\n' -> []: xss
>                   _    -> (x:ys) : yss
>                     where ~(ys,yss) = case xss of
>                                         [] -> ([],[])
>                                         (ys:yss) -> (ys,yss)
>  where xss = (lines' xs)

> main = interact (unlines . lines')