a=b
导致
error: Variable not in scope: b
为什么不会发生同样的情况
a=a?
我做了一些测试,计算它的每个函数在计算时都会卡住。
map (+1) a -- outputs nothing before getting stuck
toy x = 'f':x -- outputs "f before getting stuck
并且其他一些人被卡住了。
然而
Prelude> :type a
a :: t
所以a是变量类型的常量,没有约束。据我所知,评估它会导致某种无限循环。
我的猜测是它不断尝试自我,无限地递归。这是正确的,为什么编译时不会导致错误?