Если это типичное приложение для чтения файлов, то вам, вероятно, следует начать с lines
. Это может позволить вам полностью избежать Data.String.Utils.rstrip
:
> lines "one time\na moose\nbit my sister\n"
["one time", "a moose", "bit my sister"]
Как видите, lines
берет текст всего файла и правильно превращает каждую строку в строку без завершающей строки. Это означает, что вы можете написать программу так:
main = mapM_ (putStrLn . process) . lines =<< readFile "foo.txt"
where process :: String -> String
process = -- your code here --