gpt4 book ai didi

haskell - 为什么:k [False] result in an error in GHCI?

转载 作者:行者123 更新时间:2023-12-04 00:56:02 25 4
gpt4 key购买 nike

我对以下 session 结束时收到的错误感到困惑:

$ 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]

为什么会出错?

future 的实验表明:
*Main> :k [Int]
[Int] :: *

*Main> :k [Int, Int]
[Int, Int] :: [*]
[Int]可以有居住值(value),所以它是一种 * , 但它也是有道理的 [*] .

更多数据点:
*Main> :k []
[] :: * -> *

*Main> :k [Bool]
[Bool] :: *

最佳答案

如果您的类型级别列表只有一个元素,GHC 认为它不是提升列表,而是应用于某种类型的常规列表类型构造函数 * .

您应该在列表前加上撇号以明确选择提升的列表:

> :k '[False]
'[False] :: [Bool]

与空列表类似:
> :k '[]
'[] :: [k]

关于haskell - 为什么:k [False] result in an error in GHCI?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33554624/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com