Я смущен ошибкой, которую я получил в конце сеанса ниже:
$ 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] :: *