haskell - 为什么 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 认为 * 是乘法运算符,当我希望它表示一种类型时。
这个 wiki 页面似乎表明 Kinds 可能尚未添加到我的 GHC 版本中。会是这样吗?
我正在使用 GHCi 版本 8.0.2(来自 Ubuntu 18.04 包管理器)。
解决方案
要检查 GHCi 中的种类,您可能需要使用以下命令
> :set -XKindSignatures
> :k (Int :: *)
(Int :: *) :: *
或者省略:: *
部分,让:k
你自己弄清楚。
直接键入Int :: *
会使 GHCi 解释Int
为值表达式,并查找不存在的值构造函数Int
。它还将解释*
为一种类型,而不是一种类型,这会导致错误。
推荐阅读
- java - Mockito 不断返回一条消息,指出参数为空。为什么?
- c# - Webrequest 问题:“请求中止:连接意外关闭”
- flutter - 如何为颤动的弯曲导航栏图标添加标签?
- curve-fitting - mpfit2dfun (IDL):如何确保一个拟合参数总是大于另一个?
- database - 如何使用 iotdb-client-go 解决 IoTDB 编译错误?
- node.js - Datadog:跟踪范围返回 null
- r - R; 以闪亮的方式显示 gganimate .mp4 文件
- python - Q:ERROR: Command errored out with exit status 1:
- reactjs - React 新手,我正在尝试链接 2 个页面,它不会呈现,但路径会显示在浏览器中
- javascript - 如何在 Javascript 中读取窗口对象的控制台?