Idris 命名实现-为什么@{myOrd}放在参数之前?

Idris 命名实现-为什么@{myOrd}放在参数之前?,idris,Idris,在下面的代码中,为什么将@{myOrd}放在其参数之前而不是之后 [myOrd] Ord Nat where compare Z (s n) = GT compare (S n) Z = LT compare (z z = EQ compare (S x) (S y) = compare @{myOrd} x y 优点和缺点是什么?compare的类型是Ord a=>a->a->Ordering,因此选择Ord a实现作为第一个参数传递 compare x y是使用未命名的Or

在下面的代码中,为什么将
@{myOrd}
放在其参数之前而不是之后

[myOrd] Ord Nat where
  compare Z (s n) = GT
  compare (S n) Z = LT
  compare (z z = EQ
  compare (S x) (S y) = compare @{myOrd} x y

优点和缺点是什么?

compare
的类型是
Ord a=>a->a->Ordering
,因此选择
Ord a
实现作为第一个参数传递

compare x y
是使用未命名的
Ord Nat
实现的语法,根据
x
y
的类型填充隐式
Ord Nat
参数