Lasst uns sagen, dass ich ein Monoid Eigenschaft haben, wie unten:Scala Monoid Combinator für Optionen
trait Monoid[A] {
def combine(a1: A, a2: A): A
def identity: A
}
Nun, wenn ich einen optionMonoid dafür schreiben wollen, könnte ich es so schreiben:
val optionMonoid1 = new Monoid[Option[A]] {
def combine(a1: Option[A], a2: Option[A2]) a1 orElse a2
def identity = None
}
Dies angesichts der Tatsache, dass ich nichts über den inneren Typ in der Option weiß. Aber was, wenn ich den Mähdrescher-Operator so haben möchte, dass ich die inneren Typen in der Option wirklich kombinieren möchte?
Wenn Sie die Werte innerhalb der Option "abbilden" möchten, benötigen Sie eine Functor-Instanz. –
Aber halt, würde eine Funktor-Instanz nicht meinen Typ ändern, der in der Option enthalten ist? – sparkr
Auch wenn ich eine Functor-Instanz habe, weiß ich immer noch nicht, welcher Typ mein A ist, damit ich den Kombinator-Operator auf meinem Typ A anwenden kann! – sparkr