Ich versuche zu verstehen, was Monaden sind (nicht nur in Scala, sondern mit Beispiel Scala). Lassen Sie uns die meisten (meiner Meinung nach) einfaches Beispiel für eine Monade betrachten:Verständnis von Monaden in Scala
scala.Some
Da einige Staats Artikel, sollte jede Monade in its classic sense für die flatMap
und unit
Funktionen, einige Regeln bewahren. Hier
ist die Definition von scala.Some
@inline final def flatMap[B](f: A => Option[B]): Option[B]
So versteht es besser, wenn ich es from the category theory standpoint verstehen will. Also, wir überlegen uns eine Monade und es soll ein Funktor sein (aber zwischen was?).
Hier haben wir zur Kategorie Option[A]
und Option[B]
und die flatMap
zusammen mit den f: A => Option[B]
hinein geleitet wird, soll ein Functor zwischen ihnen definieren. Aber in der Definition der traditionellen Kategorie ist es ein Funktor von einer Kategorie zu sich selbst.
Was genau ist Ihre Frage? Die Idee einer Monade und was 'flatMap' macht, ist einfach: Eine Monade ist eine Box, die einen Wert enthält, und Sie geben eine Funktion' f' an 'flatMap', die etwas mit dem Wert in der Box macht, und Sie erhalten zurück eine weitere Box, die das Ergebnis der Anwendung von "f" auf den Wert der Originalbox enthält. – Jesper
Die Kategorie ist die Kategorie der Scala-Typen, also ist "Option" ein Endofunkt für diese Kategorie. – Lee
@Lee Also bildet es jeden Typ 'T' auf' Option [T] '? – user3663882