我对下面会话结束时收到的错误感到困惑:
$ ghci
GHCi, version 7.10.2: http://www.haskell.org/ghc/ :? for help
Ok, modules loaded: Main.
*Main> :set -XDataKinds
*Main> :t [False, True]
[False, True] :: [Bool]
*Main> :t [False]
[False] :: [Bool]
*Main> :k [False, True]
[False, True] :: [Bool]
*Main> :k [False]
<interactive>:1:2:
Expected kind ‘*’, but ‘False’ has kind ‘Bool’
In a type in a GHCi command: [False]
为什么会出现错误?
进一步的实验表明:
*Main> :k [Int]
[Int] :: *
*Main> :k [Int, Int]
[Int, Int] :: [*]
[Int]
可以有实际值,因此其类型为 *
,但也可以看作是 [*]
类型。
更多数据点:
*Main> :k []
[] :: * -> *
*Main> :k [Bool]
[Bool] :: *
-XDataKinds
,类型[False, True]
不会是种类为[Bool]
吗? - user1002430