我想解析 CSV 文件的第一行并得到解析器列表,结果惨遭失败。
经过一些简化后,我得到了我认为应该可以工作的代码,但它没有,我不明白为什么。
这里是:
{-# LANGUAGE OverloadedStrings #-}
import Data.Text
import Data.Attoparsec.Text
import Control.Applicative
doTestSep :: [String] -> Parser [String]
doTestSep t = do
(endOfLine >> return t)
<|> (char ';' *> doTestParse t)
doTestParse :: [String] -> Parser [String]
doTestParse t = do
(string "<FIELD1>" *> doTestSep ("field1" : t))
<|> (string "<FIELD2>" *> doTestSep ("field2" : t))
test = parseOnly (doTestParse []) "<FIELD1>"
我打电话test
,期待得到类似的东西
> Right ["field1"]
但相反我得到
> Left "Failed reading: takeWith"
我究竟做错了什么?