Slide 38
Slide 38 text
:+:
に対する実装
持ってる値の位置が同じで、等しければ等しい。
implicit def cconsEqual[H, T <: Coproduct](
implicit heq: Equal[H], teq: Equal[T]) = new Equal[H :+: T] {
def equal(x: H :+: T, y: H :+: T): Boolean = (x, y) match {
case (Inl(xh), Inl(yh)) => heq.equal(xh, yh)
case (Inr(xt), Inr(yt)) => teq.equal(xt, yt)
case _ => false
}
}
38