我已经阅读了this question中的答案,但我仍然感到困惑。在运行于Windows 10的GHCi(8.2.1版)和WinGHCi(1.0.6版)中,无论在有没有使用let的情况下,在提示符下键入时,我似乎都能将值绑定到表达式下面)。同样,我似乎能够通过 let f x = x x *和 f x = x x *
来定义执行功能相同的函数Prelude> x = 3
Prelude> let y = 3
Prelude> x
3
Prelude> y
3
Prelude> x == y
True
Prelude>
那么,GHCi中什么时候实际上让必要?
在适当的情况下,为GHCi设置的语言标记(我认为这是默认值,因为我没有弄乱它们)
base language is: Haskell2010
with the following modifiers:
-XNoDatatypeContexts
-XExtendedDefaultRules
-XNoMonomorphismRestriction
-XNondecreasingIndentation
答案 0 :(得分:4)
回答我自己的问题。我刚刚阅读了脚注
Haskell编程第一原理中的自GHC 8.0.1发布以来,情况已发生变化;在GHCi中使用let in声明 不再是必需的。我们假设此版本的大多数读者都将使用 在GHC的早期版本中,我们在整本书中都保留了让符号, 不会引起任何错误或损坏。
,它确认不再需要 let 。