2016-04-12 10 views
2

Goerzen他presentの実世界ハスケルの読者にParsec解析コンバイナライブラリについて教えるためのCSVファイルパーサの簡単な実装。予想通り実世界ハスケルのCSVパーサの実装

import Text.ParserCombinators.Parsec 

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 

コードが実行されますが、は、私は、文字列の最終行で「(不明)」引数を渡すの目的を理解していない:

は、ここで彼らの簡潔なプログラムのバージョンです。これは私が気づいていないイディオムですか?

答えて

4

これはSourceNameです。これは、エラーの場合にはより良い表現をするために使用されています。

それはSourcePosあなたがParsecのに多くのものを取得しますの一部です - あなたはエラーの場合には取得例えばParseError。あなたは「行のx /列yの上のファイルsourcenameここでエラー」のようなものを持っている場合があります

;)

独自の計算の内側からもう一度あなたにSourcePosを与える(getPositionでそれを得ることができます - そこからこのパラメータを取得するにはsourceNameを使用してください)

関連する問題