如何在Haskell中嵌套let语句?

时间:2012-04-13 21:38:20

标签: haskell let

我正在尝试嵌套一对let语句,但我收到的语法错误对我来说没有意义。我是Haskell编程的新手,所以我确定这是我不理解的东西(可能与间距有关)。我知道let和in必须在同一列中。

为什么会这样:

aaa = let y = 1+2
          z = 4+6
      in y+z

完美无缺,而

aaa = let y = 1+2
          z = 4+6
          in let f = 3
                 e = 3
             in e+f

给我错误:“表达式中的语法错误(意外的`=')”

1 个答案:

答案 0 :(得分:19)

在第二个示例中,z = ...未与y = ...对齐。在let块中,每个定义都必须对齐。

我怀疑你是否缩进了制表符,并让你的编辑器设置为显示少于8个空格的制表符,使它看起来像是与你对齐的。您应该用空格替换选项卡,最好将编辑器设置为将标签扩展到空格中,以避免将来出现此类问题。