无法创建具有单个元素的类型级列表

Unable to create a type-level list with a single element

我对以下行为感到困惑。出现这种情况有明显的原因吗?

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]

还要注意 [ 之后的 space,这是为了消除 type-level 字符文字的歧义。