为什么 GHCi 不允许我用种类注释我的类型?



我在阅读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。它还将*解释为一种类型,而不是一种会导致错误的类型。

相关内容

  • 没有找到相关文章

最新更新