仍被GHCi中的“让”感到困惑

时间:2018-07-15 01:27:57

标签: haskell

我已经阅读了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

1 个答案:

答案 0 :(得分:4)

回答我自己的问题。我刚刚阅读了脚注

  

自GHC 8.0.1发布以来,情况已发生变化;在GHCi中使用let in声明   不再是必需的。我们假设此版本的大多数读者都将使用   在GHC的早期版本中,我们在整本书中都保留了让符号,   不会引起任何错误或损坏。

Haskell编程第一原理中的

,它确认不再需要 let