haskell - `try` 在秒差距中的表现如何?

标签 haskell parsec

为了弄清楚 try 如何在秒差距中工作,我将其放入 ghci:

λ> parse (try $ string "a") "" "b"
Left (line 1, column 1):
unexpected "b"
expecting "a"

我不太确定我在期待什么,但这不是我所期待的,因为我认为 try 的全部目的是当预期的事情不是时不会导致错误在那里。

最佳答案

try不会默默地吃掉错误,但当发生错误时它不会消耗任何 token (它会重置 token 流,又称回溯)。该错误仍然会发生,但您可以继续,就像解析器根本没有消耗任何 token 一样(通过使用 <|> )。

关于haskell - `try` 在秒差距中的表现如何?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22888484/

相关文章:

haskell - 使用 haskell-chart 叠加图

haskell - 结合 Haskell 代码的片段以获得更大的图景

parsing - 解析空行之间的数字数组

haskell - parsec:带有有用错误消息的字符串选择解析器

haskell - 秒差距输入意外结束

parsing - Haskell 的 Parsec 库可以用于实现带备份的递归下降解析器吗?

Haskell 自定义数据类型、实例数和冗余

haskell - 为什么第一个 Haskell 函数无法处理无限列表,而第二个代码段在无限列表中成功?

haskell - (Num (Int -> Int)) 没有因使用句法否定而产生的实例

haskell - Parsec:消耗所有输入