假设我们有一个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"]