假设我有一个函数f : Ord a => ...
,它需要a
拥有一个Ord
实例。
我可以使用{p>来访问Ord a
实例
f : Ord a => ...
f @{ord} ...
由于Eq a => Ord a
,a
还需要一个Eq a
实例。有没有办法直接从Ord a
检索它,而不是像下面这样做?
f : (Eq a, Ord a) => ...
f @{eq} @{ord} ...
答案 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