【发布时间】:2017-03-23 23:42:07
【问题描述】:
有什么区别
f x = x + 1
和
let f x = x + 1
当输入 GHCi 时? IIUC,有一条特殊规则,let 没有 in 内部 GHCi 有效地适用于解释器的整个范围。但是如果let 的存在没有任何区别,那么这条规则的意义何在?
编辑:使用 GHCi 8.0.2 版。
【问题讨论】:
-
哪个版本的 GHCi?我的不接受
f x = x + 1作为输入(解析错误)。 -
@Mephy 这是 GHC 8 中的新功能。
-
据我了解,必须使用
let在 GHCi 中绑定名称是其实现方式的影响。你可以想象你正在向 IO monad 中的“do-block”输入命令。 -
@Erik 我不是她,这就是它的实际实现方式(我相信您不是直接在 IO do 块中输入语句,而是在 GHCi 的代码中有一个 IO 操作正在解释您的声明)。但是,语法基于 do 块语法当然是故意的。
标签: haskell