2
我想在Idris中编写一条记录,但它有一个通用参数,需要受到接口的约束。对于正常的联盟类型,我可以这样写:在Idris中约束记录类型
data BSTree : (a : Type) -> Type where
Empty : Ord a => BSTree a
Node : Ord a => BSTree a -> a -> BSTree a
但我试图找出做同样的事情,只是用记录的语法。我试过类似的东西:
record Point a where
constructor MkPoint : Eq a => a -> a -> Point a
x : a
y : a
但它不能编译。
有没有办法在Idris做到这一点?
TIA
谢谢。我知道你*不应该直接在字段上添加约束条件。这就是为什么在我的记录示例中,我尝试将约束添加到MkPoint数据构造函数中(这也是我为union类型所做的)。有没有办法让我对MkPoint数据构造函数有约束? –
@RananvanDalen不,没有办法直接向构造函数添加约束。并没有什么实际意义,因为在字段约束和“构造函数”约束之间没有语义差异。只有语法差异。 – Shersh