【发布时间】:2015-08-16 23:42:03
【问题描述】:
使用 Shapeless 的 Nat 类型,我如何得出两个自然数不相等的证据?
这是我目前所拥有的,但它只证明给定的Nat 不等于0。如何证明任意两个Nat 值不相等?
trait NEq[A <: Nat, B <: Nat] extends Serializable
object NEq {
def apply[A <: Nat, B <: Nat](implicit neq: A != B): NEq[A, B] = neq
type !=[A <: Nat, B <: Nat] = NEq[A, B]
implicit def neq1[B <: Nat] = new !=[Succ[B], _0] {}
implicit def neq2[B <: Nat] = new !=[_0, Succ[B]] {}
}
【问题讨论】: