3
這是有道理的:列表類型簽名
test :: [[Int]]
test = [[]]
main = print test
但是爲什麼這編譯(和運行)?
test :: [[Int]]
test = []
main = print test
這是有道理的:列表類型簽名
test :: [[Int]]
test = [[]]
main = print test
但是爲什麼這編譯(和運行)?
test :: [[Int]]
test = []
main = print test
[[Int]]
是列出的名單(智力的)和
[[]]
- 名單與一個空表內[]
- 空列表類型的[]
是多態,即forall t. [t]
,這意味着它代表任何類型的空列表t
。由於test
是[[Int]]
類型,因此我們可以統一t ~ [Int]
,因此[]
也是[[Int]]
類型的空列表。