Dav*_*ked 2 csv parsing haskell
Goerzen等人提出了一个简单的CSV文件解析器实现,以向Real World Haskell的读者介绍Parsec解析组合库.
这是他们简洁程序的一个版本:
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
Run Code Online (Sandbox Code Playgroud)
代码按预期运行,但我不明白在最后一行传递字符串"(unknown)"参数的目的.这是一些我不知道的成语吗?
它是SourceName- 它用于在错误情况下为您提供更好的表示.
这是SourcePos你在Parsec中得到许多东西的一部分- 例如ParseError你在错误案例中得到的东西.
您可能希望有类似"x行/列y上的文件SourceName中的错误";)
从你自己的计算中你可以得到它getPosition(它SourcePos再次给你一个- 从那里你可以sourceName用来获取这个参数)