Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Parsing 现实世界的哈斯克尔';CSV解析器的实现_Parsing_Csv_Haskell - Fatal编程技术网

Parsing 现实世界的哈斯克尔';CSV解析器的实现

Parsing 现实世界的哈斯克尔';CSV解析器的实现,parsing,csv,haskell,Parsing,Csv,Haskell,Goerzen等人提供了一个CSV文件解析器的简单实现,用于向真实世界的Haskell读者介绍Parsec解析组合器库 以下是他们简明程序的一个版本: import Text.ParserCombinators.Parsec csvFile = endBy line eol line = sepBy cell (char ',') cell = many (noneOf ",\n") eol = char '\n' parseCSV :: String -> Either ParseE

Goerzen等人提供了一个CSV文件解析器的简单实现,用于向真实世界的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
代码按预期运行,但我不明白在最后一行传递字符串“(未知)”参数的目的。这是我不知道的习惯用法吗?

它的-用于在错误情况下提供更好的表示

它是Parsec中许多东西的
SourcePos
的一部分,例如在错误情况下得到的

您可能希望出现类似“文件源名称在第x行/第y列中出错”这样的情况

从您自己的计算中,您可以获得它(这再次为您提供了一个
SourcePos
——从那里您可以使用
sourceName
来获取此参数)