如何在Haskell中嵌套let语句?

Nic*_*ico 11 haskell let

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

为什么:

aaa = let y = 1+2
          z = 4+6
      in y+z
Run Code Online (Sandbox Code Playgroud)

工作完全正常,而

aaa = let y = 1+2
          z = 4+6
          in let f = 3
                 e = 3
             in e+f
Run Code Online (Sandbox Code Playgroud)

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

ehi*_*ird 19

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

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

  • @Nico我建议你恢复编辑,所以它符合这个答案中的解释,这样找到这个的人就不会感到困惑. (3认同)