从可选解析器列表中取出单个后续值
Take a single succeeding value out of a list of optional Parsers
我有一个带有签名的函数
tryParseAllFilesInDir :: FilePath -> [Parsec ByteString () (Maybe a)]
它尝试解析目录中具有特定 Parser
的所有文件。 假设只有一个文件会真正成功,但我不知道运行时是哪个文件。
我想取出可选的解析器列表,并取出唯一的后续解析器值。我不知道我会用什么函数来实现这个。
我不知何故必须从 [Parsec ByteString () (Maybe a)] -> [Maybe a]
开始,然后是 [Maybe a] -> Just a
。
如果有更好的方法来做到这一点,我也会很感激。
您可以 运行 带有 runParser
. This will give you a list of type [Either ParseError (Maybe a)]
; you can use partitionEithers
的解析器来仅提取成功的解析。
我有一个带有签名的函数
tryParseAllFilesInDir :: FilePath -> [Parsec ByteString () (Maybe a)]
它尝试解析目录中具有特定 Parser
的所有文件。 假设只有一个文件会真正成功,但我不知道运行时是哪个文件。
我想取出可选的解析器列表,并取出唯一的后续解析器值。我不知道我会用什么函数来实现这个。
我不知何故必须从 [Parsec ByteString () (Maybe a)] -> [Maybe a]
开始,然后是 [Maybe a] -> Just a
。
如果有更好的方法来做到这一点,我也会很感激。
您可以 运行 带有 runParser
. This will give you a list of type [Either ParseError (Maybe a)]
; you can use partitionEithers
的解析器来仅提取成功的解析。