代码之家  ›  专栏  ›  技术社区  ›  stusmith

在深度haskell递归中,除了异常之外还有什么选择?

  •  6
  • stusmith  · 技术社区  · 15 年前

    我想通过写一些小程序来学习哈斯克尔…所以我目前正在为简单表达式编写一个lexer/parser。(是的,我可以用亚历克斯/快乐……但我想先学习核心语言)。

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

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

    2 回复  |  直到 15 年前
        1
  •  5
  •   user395760    15 年前

    Either a b Either ErrorDetails ParseTree Right theParseTree Left ErrorDetails

        2
  •  9
  •   Paul    15 年前

    Maybe Either