haskell - 无法使用单个元素创建类型级列表

标签 haskell data-kinds

我对以下行为感到摸不着头脑。出现这种情况有明显的原因吗?

Prelude> :set -XDataKinds

Prelude> :k 'True
'True :: Bool

Prelude> :k ['True, 'False]
['True, 'False] :: [Bool]

Prelude> :k ['True]

<interactive>:1:2: error:
    • Expected a type, but ‘ 'True’ has kind ‘Bool’
    • In the type ‘[ 'True]’

PS:如果这是 GHC 错误并且后来修复了,我使用的是 GHC 8.4.3。

最佳答案

您必须通过反引号消除列表类型与类型级别列表类型的歧义:

> :k '[ 'True]

另请注意 [ 后面的空格,这是消除类型级字 rune 字歧义所必需的。

关于haskell - 无法使用单个元素创建类型级列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56852668/

相关文章:

haskell - 仍然对 GHCi 中的 'let' 感到困惑

haskell - 将模式匹配限制为构造函数的子集

haskell - 如何在没有 DataKinds 的情况下使值依赖于其他值?

haskell - 不寻常的种类和数据构造函数

haskell - realUnsafePtrEquality# 在没有字段的构造函数上

haskell - 使用类型族避免 MPTC 中的显式类型类参数

haskell - GHCI 断点问题

multithreading - Haskell 中的半显式并行性

haskell - 涵盖提升数据类型的所有情况

haskell - 我可以使用 DataKinds 编写一个返回由参数编码的类型值的函数吗?