IDRIS-派生扩展接口实例

时间:2019-02-23 11:34:32

标签: interface idris

假设我有一个函数f : Ord a => ...,它需要a拥有一个Ord实例。 我可以使用{p>来访问Ord a实例

f : Ord a => ...
f @{ord} ...

由于Eq a => Ord aa还需要一个Eq a实例。有没有办法直接从Ord a检索它,而不是像下面这样做?

f : (Eq a, Ord a) => ...
f @{eq} @{ord} ...

2 个答案:

答案 0 :(得分:1)

可以使用%implementation进行以下操作:

eqFromOrd : Ord a => Eq a
eqFromOrd @{ord} = %implementation

答案 1 :(得分:1)

我将使用@marcosh的解决方案,但这是对此的另一种解释,表明我们严格不需要%implementation

eqExplicit : Eq a => Eq a
eqExplicit @{eq} = eq

eqFromOrd : Ord a => Eq a
eqFromOrd = eqExplicit