Haskell无限循环,简单地重新放行动

3 haskell loops infinite

我有这样的代码:

Prelude> let n = [1,2,3,4]
Prelude> n
[1,2,3,4]
Prelude> 0:n
[0,1,2,3,4]
Prelude> let n = 0:n
Run Code Online (Sandbox Code Playgroud)

当我在上面输入Haskell解释器后:

Prelude> n
Run Code Online (Sandbox Code Playgroud)

我得到了无限的结果:

[0,0,0,0,0,0,0,0,0
Run Code Online (Sandbox Code Playgroud)

打印"0"的地方是无限的.

为什么我会得到这样的结果?
是否有一些递归的东西,为什么/它如何在解释器级别工作?
我可以抓住堆栈溢出,GHCi上的这些东西是不是?

谢谢,
最诚挚的问候!

Jos*_*Lee 8

n阴影的新绑定旧的.您不会重新分配Haskell中的变量.


Tho*_*son 7

乔什所说的是你对n的定义扩展为:

0:n.  -- note n still equals 0:n, just like you said
0:0:n. -- note n _still_ equals 0:n
0:0:0:n
...
Run Code Online (Sandbox Code Playgroud)