这是有道理的:
test :: [[Int]]
test = [[]]
main = print test
但为什么要编译(并运行)?
test :: [[Int]]
test = []
main = print test
答案 0 :(得分:9)
[[Int]]
是列表(Int' s)和
[[]]
- 列出[]
- 空列表答案 1 :(得分:4)
[]
的类型是多态的,即forall t. [t]
,这意味着它代表任何类型t
的空列表。由于test
属于[[Int]]
类型,因此我们可以统一t ~ [Int]
,因此[]
也是[[Int]]
类型的空列表。