在保存haskell之前按长度过滤文件

Ali*_*Ali 1 haskell file filter

已经提出了类似的问题,但手头有一个列表: 在Haskell中按长度过滤列表项

我已经知道如何从文件中获取单词列表

getWords path = do contents <- readFile path
                   return (lines contents)
Run Code Online (Sandbox Code Playgroud)

然后我可以过滤它以获得特定长度的单词,但是......

我想知道的是,如果有一种方法(最好不是无点样式 - 除非必要)在将文件保存为单词列表之前按长度过滤文件.

例如,words.txt是每行1个单词的文件.

filteredWords <- filter (\x -> length x == 3) *Read words.txt in place*
Run Code Online (Sandbox Code Playgroud)

Jer*_*ist 6

使用IO也是一个实例的事实Functor

filteredWords <- fmap (filter (\x -> length x == 3)) $ getWords path
Run Code Online (Sandbox Code Playgroud)

由于您在不使用的情况下询问了如何执行此操作getWords:您可以使用函数组合运算符..

filteredWords <- fmap (filter (\x -> length x == 3) . lines) $ readFile path
Run Code Online (Sandbox Code Playgroud)

我想readFile是在Prelude,如果不是那么它会在System.IO