Ana*_*Ana 12 haskell data-kinds
我对下面会话结束时收到的错误感到困惑:
$ 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]
Run Code Online (Sandbox Code Playgroud)
为什么错误?
未来的实验揭示:
*Main> :k [Int]
[Int] :: *
*Main> :k [Int, Int]
[Int, Int] :: [*]
Run Code Online (Sandbox Code Playgroud)
[Int]可以有人居住的价值,所以它是善良的*,但它也是有意义的[*].
更多数据点:
*Main> :k []
[] :: * -> *
*Main> :k [Bool]
[Bool] :: *
Run Code Online (Sandbox Code Playgroud)
And*_*ács 11
如果你有只有一个元素的类型级别列表,GHC认为它不是一个提升列表,而是一个应用于某种类型的常规列表类型构造函数*.
您应该在列表前面加上撇号,以明确选择提升列表:
> :k '[False]
'[False] :: [Bool]
Run Code Online (Sandbox Code Playgroud)
与空列表类似:
> :k '[]
'[] :: [k]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
128 次 |
| 最近记录: |