我在阅读《 Haskell的历史》一书时发现了有关Kinds的内容,并尝试在the 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认为*是乘法运算符,当我希望它表示种类时。
This wiki page似乎表明种类可能尚未添加到我的GHC版本中。是这样吗?
我正在使用GHCi版本8.0.2(来自Ubuntu 18.04程序包管理器)。
答案 0 :(得分:2)
要检查GHCi中的种类,您可能需要使用以下内容
> :set -XKindSignatures
> :k (Int :: *)
(Int :: *) :: *
或省略:: *
部分,让:k
为您找出答案。
直接键入Int :: *
将使GHCi将Int
解释为值表达式,并寻找不存在的值构造函数Int
。它还会将*
解释为一种类型,而不是一种类型,这会导致错误。