我在阅读Haskell的历史论文时发现了Kinds,并试图在Haskell Wiki上运行一些示例。
当我这样做时,我得到错误
Prelude> Int :: * [3/1792]
<interactive>:1:8: error:
Not in scope: type constructor or class ‘*’
<interactive>:1:8: error:
Illegal operator ‘*’ in type ‘*’
Use TypeOperators to allow operators in types
我不认为"导入"TypeOperators会有帮助,因为我认为GHCi认为*是乘法运算符,而我希望它表示Kind。
这个维基页面似乎表明Kinds可能还没有被添加到我的GHC版本中。情况会是这样吗?
我使用的是GHCi版本8.0.2(来自Ubuntu 18.04软件包管理器(。
要检查GHCi中的种类,您可能需要使用以下
> :set -XKindSignatures
> :k (Int :: *)
(Int :: *) :: *
或者省略:: *
部分,让:k
为您解决。
直接键入Int :: *
将使GHCi将Int
解释为值表达式,并查找不存在的值构造函数Int
。它还将*
解释为一种类型,而不是一种会导致错误的类型。