translator.hs 670 B

123456789101112131415161718192021222324252627
  1. import System.Environment
  2. mapFilter :: (a -> Maybe b) -> [a] -> [b]
  3. mapFilter fn = worker . map fn
  4. where
  5. worker (Nothing : rest) = worker rest
  6. worker ((Just x) : rest) = x : worker rest
  7. worker [] = []
  8. translate :: String -> [String] -> [String]
  9. translate language = mapFilter worker
  10. where
  11. worker ('|':x:y:'>':line)
  12. | [x,y] == language = Just line
  13. | otherwise = Nothing
  14. worker line = Just line
  15. main :: IO ()
  16. main = do
  17. args <- getArgs
  18. case args of
  19. [language] -> interact (unlines . translate (language) . lines)
  20. _ -> putStrLn "translator language"