假设我们有一个my_file.txt
包含内容的文件:
foo
bar
另一个文件my_other_file.txt
包含:
baz
我想读取这两个文件的内容,turtle
以便我得到一个Shell
将产生的行:
foo
bar
baz
在 Haskell 的turtle
库中,可以使用 读取文件列表input
,例如:
view $ input "my_file.txt"
我们有那个
input :: FilePath -> Shell Line
并且Shell
没有Monoid
实例(我认为这是有道理的,因为我们无法关联IO
操作),所以我能想到的唯一运算符是(<|>)
:
view $ foldl (<|>) empty $ map input ["my_file.txt", "my_other_file.txt"]
虽然这会产生预期的效果,但我想知道生态系统中是否有一个库来turtle
处理这个问题,或者是否有traverse
类似的操作可以在Alternative
's 上使用。
编辑:上面的效果也可以通过使用来实现asum
:
asum $ input <$> ["my_file.txt", "my_other_file.txt"]