2017-04-18 99 views
4

我想要设置类型(x, y)x /= y类型对(x,y)与(x/= y)

我的想法是定义NEqPa : Type -> Type这样NEqPa a应该包含所有的元素((x,y), p)x : ay : ap : (x = y) -> Void。我尝试了以下两个版本:

NEqPa a = ((x, y) : (a, a) ** (x = y) -> Void) 

NEqPa a = ((x : a, y : a) ** (x = y) -> Void) 

这两个似乎都是语法错误,但我不知道如何解决它们。

[编辑]我发现了一个解决方案:

NEqPa a = (p : (a, a) ** (fst p = snd p) -> Void) 

是这种做法合理吗?

回答

2

**的语法糖在第一个坐标上添加明确的类型注释时有点难以使用。我只是直接使用DPair

NEqPa : Type -> Type 
NEqPa a = DPair (a, a) $ \(x, y) => Not (x = y) 
+0

谢谢。如果我想详细了解Idris的语法,是否有任何来源可以推荐?目前还没有语言报告,是吗? – fweth

相关问题