RosettaCodeData/Task/Find-common-directory-path/Haskell/find-common-directory-path-...

22 lines
454 B
Haskell

import Data.List (transpose, intercalate)
import Data.List.Split (splitOn)
import Data.Bool (bool)
cdp :: [String] -> String
cdp =
flip
(bool .
intercalate "/" .
fmap head .
takeWhile ((all . (==) . head) <*> tail) . transpose . fmap (splitOn "/"))
([]) <*>
null
main :: IO ()
main =
(putStrLn . cdp)
[ "/home/user1/tmp/coverage/test"
, "/home/user1/tmp/covert/operator"
, "/home/user1/tmp/coven/members"
]