在我编写 Show 实例的一个小例子时,我犯了一个缩进错误:
module Main where
data B= B0|B1
instance Show B where
show B0="0"
show B1="1"
main=print B0
Run Code Online (Sandbox Code Playgroud)
显然,工作代码是:
module Main where
data B= B0|B1
instance Show B where
show B0="0"
show B1="1"
main=print B0
Run Code Online (Sandbox Code Playgroud)
我原以为第一个会出现编译错误,但我可以运行它,结果是:
example.hs: stack overflow
为什么这段代码甚至可以编译?
另外,为什么这只是运行时错误(如果堆栈不受约束,则会填满您的 RAM)而不是编译错误?
haskell ×1