gpt4 book ai didi

haskell - 为什么使用遮蔽 `let` 绑定(bind)的此代码会挂起?

转载 作者:行者123 更新时间:2023-12-02 04:01:33 26 4
gpt4 key购买 nike

运行此代码:

j = let x = 4
in let x = x * x
in x

在解释器中:

ghci> j
... no response ...

因 CPU 利用率极低而挂起。为什么是这样?我预计j = 16

最佳答案

根据 Haskell 报告,section 3.12 :

Let expressions have the general form let { d1 ; … ; dn } in e, and introduce a nested, lexically-scoped, mutually-recursive list of declarations (let is often called letrec in other languages). The scope of the declarations is the expression e and the right hand side of the declarations.

(强调我的)

因此,在第二个 let 中,其中 x = x * x,所有 x 都引用相同的绑定(bind), 指的是外部x = 4 绑定(bind)。

关于haskell - 为什么使用遮蔽 `let` 绑定(bind)的此代码会挂起?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11902413/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com