在这种情况下,我尝试连续读取两个文件,将它们分别打印到列表中。
import System.IO
import Data.List
main = do
text1 <- readFile "a.txt"
let aList = map (map read) $ map tail $ filter (\xs -> length xs == 4) $ map words $ lines text1 :: [[Int]] --never mind
putStr $ show aList
text2 <- readFile "b.txt"
let bList = map tail $ filter (\xs -> length xs == 4) $ map words $ lines text2
putStr $ show bList
AND a.txt和b.txt是:
a 1 1 1
a 2 50 1
a 3 50 50
b 100 11 1 0 40 1
b 100 12 3 1 22 23
b 101 11 1 0 45 1
b 101 12 3 1 28 30
b 102 11 1 0 50 1
但似乎通过使用readFile / withFile,无论如何,你只能在do圈中读取一个文件,否则你会收到错误
test.hs:9:14: Parse error in pattern: show
(9:14是:putStr $ show aList)
我想知道的是我理解错了,还是有另一种方法来访问sevaral文件一次?
答案 0 :(得分:4)
我怀疑你有一个标签与空格问题,因为我可以通过缩进来重现你的错误信息
text2 <- readFile "b.txt"
超过上一行。除非您完全确定自己在做什么,否则请确保您的文件只包含空格,没有标签。然后确保do
块中的所有行都缩进相同。