haskell - 深度 Haskell 递归中异常的替代方案是什么?

标签 haskell exception recursion

我正在尝试通过编写小程序来学习 Haskell...所以我目前正在为简单表达式编写一个词法分析器/解析器。 (是的,我可以使用 Alex/Happy...但我想先学习核心语言)。

我的解析器本质上是一组构建树的递归函数。在语法错误的情况下,我通常会抛出异常(即,如果我用 C# 编写),但在 Haskell 中似乎不鼓励这样做。

那么还有什么选择呢?我真的不想测试解析器的每一个位中的错误状态。我希望要么得到一个有效的节点树,要么得到一个包含详细信息的错误状态。

最佳答案

Haskell 为此提供了MaybeEither 类型。由于您想返回错误状态,Either 似乎就是您想要的。

关于haskell - 深度 Haskell 递归中异常的替代方案是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3762563/

相关文章:

linux - haskell 中的 Latexpdf 式功能?

java - 如何从 try、catch 和 finally 中返回一个值?

java - 为什么我们总是要抛出新的异常?我们可以不将该异常存储为实例变量并每次都抛出相同的实例吗?

java - 递归修改用给定注释注释的对象中的所有字段

haskell - 具有快速随机性和纯度的并行计算?

haskell - "Show"使用 Unicode (Haskell) 记录

c++ - 穷举搜索 : minimum number of coins for change. 使用递归时保留解决方案数组

javascript - 在 JavaScript 中实现递归的最佳方法?

haskell - 使用具有自定义数据类型的过滤器

java - 如何修复 org.apache.commons.compress.archivers.zip.UnsupportedZipFeatureException(epub mimetype)?