14

我正在尝试嵌套几个 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

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

4

1 回答 1

21

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

我怀疑您正在使用制表符缩进,并将您的编辑器设置为将制表符显示为少于 8 个空格,使其看起来与您对齐。您应该将制表符替换为空格,并且最好将您的编辑器设置为将制表符扩展为空格,以避免将来出现此类问题。

于 2012-04-13T21:48:41.817 回答