在下面的代码中,为什么@{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
有哪些优点和缺点?
答案 0 :(得分:0)
compare
的类型为Ord a => a -> a -> Ordering
,因此Ord a
实现的选择将作为第一个参数传递。
compare x y
是使用未命名的Ord Nat
实现的语法,通过填写基于Ord Nat
和x
的隐式y
参数类型。