Я хочу разобрать файл следующим образом:
66:3 3:4 329:2 101:3 495:4 55:5 268:5 267:2 242:4 262:1 861:1
Мой код выглядит следующим образом:
getTestData :: String -> IO [[(Int, Int)]]
getTestData name = do
--res <- parseFromFile testData (name ++ ".test")
fc <- readFile (name ++ ".test")
let res = parse testData "test data" fc
case res of
Left e -> error $ show e-- "test data parse eror."
Right ts -> return ts
eol = char '\n'
testData = endBy line eol
--testData = many line
testTuple = do
i <- natural
colon
r <- natural
return (fromIntegral i:: Int, fromIntegral r:: Int)
line = sepBy testTuple whiteSpace
Но при запуске выдает исключение:
ts <- getTestData "data"
*** Exception: "test data" (line 11, column 1):
unexpected end of input
expecting natural or "\n"
Я не понимаю, почему он сказал строку 11, когда в моем файле data.test всего 10 строк. Поэтому мне не удалось решить эту проблему после нескольких попыток.