记录没有无限类型错误

ami*_*dfv 4 haskell types algebraic-data-types

当我在Haskell(GHC)中定义类似的东西时,为什么没有列表样式的无限类型错误?

data Broken = Broken { title :: String,
                       loop  :: Broken }
Run Code Online (Sandbox Code Playgroud)

它编译没有类型错误,但显然它是一个不可用的类型:我必须定义

foo = Broken "one" (Broken "two" (Broken "three" ...

sep*_*p2k 13

关于它没有什么破坏.完全可以定义该类型的值:

foo = Broken "one" foo
Run Code Online (Sandbox Code Playgroud)

基本上它与定义没有零值的列表类型(这也是完全合法的)是一回事.完全可以定义该类型的值,但所有这些值都必须是无限的.