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"
私は何を間違っていますか?