列表类型签名

时间:2016-10-07 10:55:28

标签: haskell

这是有道理的:

test :: [[Int]]
test = [[]]

main = print test

但为什么要编译(并运行)?

test :: [[Int]]
test = []

main = print test

2 个答案:

答案 0 :(得分:9)

[[Int]]是列表(Int' s)和

  • [[]] - 列出
  • 中的一个空列表
  • [] - 空列表

答案 1 :(得分:4)

[]的类型是多态的,即forall t. [t],这意味着它代表任何类型t的空列表。由于test属于[[Int]]类型,因此我们可以统一t ~ [Int],因此[]也是[[Int]]类型的空列表。