我有这样的代码:

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

当我在上层之后输入 Haskell 解释器时:
Prelude> n

我得到了无限的结果:
[0,0,0,0,0,0,0,0,0

打印“0”的地方是无限的。

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

谢谢,
此致!

最佳答案

Josh 所说的是你对 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
...

关于Haskell 无限循环,只需重新让 Action ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9814897/

10-12 03:59