haskell - 为什么我不能在类型族声明中使用约束类型?
问题描述
我在用着
{-# LANGUAGE TypeFamilies, DataKinds, ConstraintKinds, ExistentialQuantification #-}
并输入了以下代码:
class NoConstraint x where {}
instance forall x. NoConstraint x where {}
type family Classes (c :: [* -> Constraint]) (x :: *) :: Constraint
type instance Classes [] x = NoConstraint x
type instance Classes (h : t) x = (h x, Classes t x)
然而,GHC(i) 拒绝了这一点:
Not in scope: type constructor or class `Constraint'
然而,这似乎是完全可能的。
编辑:我现在发现上面的代码还有其他问题。
然而,这仍然是一个有效的问题。
解决方案
问题是因为Constraint
默认情况下不会从Prelude
. 您可以通过 hoogleConstraint
找到它的位置:
尝试将以下内容添加到您的模块中:
import Data.Kind (Constraint)
它为我解决了这个问题。
推荐阅读
- java - Payara 5 web.xml 中 PGSimpleDataSource 的自定义属性
- html - Bootstrap:容器中垂直居中的行
- json - 如何在jq中解析/替换json文件的值
- asynchronous - 这个线程代码有解释吗?
- google-maps - Google Places api附近搜索与地图上返回的结果之间的差异
- java - 比较两个帐户,通过他们的答案,与 Firebase
- asp.net-core-2.2 - 在 Asp.NetCore 中将模型类列表从视图传递到控制器
- node.js - 如何在请求中获取 POST 数据?
- postgresql - 无法与其他用户连接到数据库
- html - 通过带有折叠按钮的导航栏更改选项卡内容