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
参数