> lines' :: String -> [String] > lines' [] = [] > lines' (x:xs) = f x (lines' xs) > f :: Char -> [String] -> [String] > f '\n' xss = "" : xss > f x xss = (x : head0 xss) : tail0 xss > head0 [] = [] > head0 (ys:yss) = ys > tail0 [] = [] > tail0 (ys:yss) = yss > main = interact (unlines . lines')