haskell可以读取多个文件吗?

时间:2014-05-30 06:47:49

标签: file haskell

在这种情况下,我尝试连续读取两个文件,将它们分别打印到列表中。

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文件一次?

1 个答案:

答案 0 :(得分:4)

我怀疑你有一个标签与空格问题,因为我可以通过缩进来重现你的错误信息

    text2 <- readFile "b.txt"

超过上一行。除非您完全确定自己在做什么,否则请确保您的文件只包含空格,没有标签。然后确保do块中的所有行都缩进相同。