ich versucht, einen typeclass zu schreiben, SumEq5
, so dass seine HList
-5
aufaddieren ersten beiden Felder des Typs Parameter:Compile-Time-Check auf Summe von Nat's?
trait SumEq5[A]
object SumEq5 {
def apply[L <: HList](implicit ev: SumEq5[L]): SumEq5[L] = ev
implicit def sumEq5Ev[L <: HList, A <: Nat, B <: Nat](
implicit hcons: IsHCons.Aux[L, A, B :: HNil],
ev: Sum.Aux[A, B, _5]
): SumEq5[L] = new SumEq5[L] {}
}
Aber es scheint nicht zu funktionieren:
import shapeless._
import shapeless.nat._
import net.SumEq5
scala> SumEq5[_0 :: _5 :: HNil]
<console>:19: error: could not find implicit value for
parameter ev: net.SumEq5[shapeless.::[shapeless.nat._0,shapeless.::
[shapeless.nat._5,shapeless.HNil]]]
SumEq5[_0 :: _5 :: HNil]
Bitte geben mir einen Hinweis, warum _0 :: _5 :: HNil
hat keinen Beweis, dass seine beiden Nat
sind gleich 5.
EDIT
Aktualisierte Frage per Denis Rosca hilft in shapeless's gitter.
Der Zug leer ist, warum also nicht nur ' neu SumEq5 [L] '? – cchantep
Das ist in Ordnung, aber es wird nicht für meine Eingabe funktionieren, nicht? –