26 lines
681 B
Haskell
26 lines
681 B
Haskell
module Main where
|
|
|
|
import System.Environment
|
|
|
|
cmp :: String -> String -> Ordering
|
|
cmp [] [] = EQ
|
|
cmp [] (_:_) = LT
|
|
cmp (_:_) [] = GT
|
|
cmp (_:xs) (_:ys) = cmp xs ys
|
|
|
|
longest :: String -> String
|
|
longest = longest' "" "" . lines
|
|
where
|
|
longest' acc l [] = acc
|
|
longest' [] l (x:xs) = longest' x x xs
|
|
longest' acc l (x:xs) = case cmp l x of
|
|
LT -> longest' x x xs
|
|
EQ -> longest' (acc ++ '\n':x) l xs
|
|
GT -> longest' acc l xs
|
|
|
|
main :: IO ()
|
|
main = do
|
|
(file:_) <- getArgs
|
|
contents <- readFile file
|
|
putStrLn $ longest contents
|