アイブ氏は、このページ http://book.realworldhaskell.org/read/using-parsec.html と協力して、私は、CSVファイルパーサーの作業を取得しようとしているが、私はHaskellのParsecの機能
parse csvFile "(stdin)" str
は常に
Right [["s","o"],["h","i"]]
ですを返すことに気づきました解析する方法があります。後で私のコードで使うことができる配列の配列を返します。
例えばコード:
main = mainLoop []
mainLoop :: [[String]] -> IO()
mainLoop db = do
answer <- getLine
case words answer of
("load":x) -> do
str <- readFile (head x)
mainLoop $ parseCSV str
("quit":_) -> return()
("help":_) -> do
putStrLn "This is your help"
mainLoop db
otherwise -> putStrLn "Not sure what you want me to do! :(" >> mainLoop db
csvFile = endBy line eol
line = sepBy cell (char ',')
cell = many (noneOf ",\n")
eol = char '\n'
parseCSV :: String -> Either ParseError [[String]]
parseCSV input = parse csvFile "(unknown)" input
はあなた
しかし、どのようにエラー処理を行いますか?入力を解析できない場合、プログラムがクラッシュしても問題ありませんか? – hugomg
あなたはその値 'Right [[...]、[...]]をリストのリストに変換できることを知っています:' [[...]、[...]] ' ? '(どちらかといえば(エラーが表示される)場合は)[どちらか](http://hackage.haskell.org/packages/archive/base/latest/doc/html/Prelude.html#v:either)機能を使うことができます。 id(parseCSV入力) ' –
私はそれを知らなかった、ありがとう:)私はそれが働くようになった。 – DustBunny