Es scheint wie die Optional in Java 8 is a monad.Sind die Streams in Java 8 Monaden?
Sind die Streams auch Monaden?
Kann jemand das endofunctor und die zwei natürlichen Transformationen im optionalen monad identifizieren?
Es scheint wie die Optional in Java 8 is a monad.Sind die Streams in Java 8 Monaden?
Sind die Streams auch Monaden?
Kann jemand das endofunctor und die zwei natürlichen Transformationen im optionalen monad identifizieren?
EDIT Die Antwort ist unten falsche (hier für die Geschichte erhalten).
Ja, in jedem Fall besteht die Funktors der Klasse und ihre
map
Methode, und die beiden natürlichen Transformationen sindof
undflatMap(identity)
.
Die richtige Antwort scheint here zu sein.
müssten wir definieren: \ displaystyle \ begin {array} {lcl} \ mathit {return} & :: & a \ rightarrow \ mathit {Stream} \, a \\ mathit {join} & :: & \ mathit {Stream} \, (\ mathit {Stream} \, a) \ rechter Pfeil \ Math {Stream} \, a \ end {Array} –
Wenn Sie Haskell kennen: Javas Stream ist nichts anderes als Haskells Liste monad [] und Java's Optional ist nichts anderes als die Haskell's Maybe Monade.
Nicht wissen Streams sehr gut, ich denke es ist. Doch wie kommt es darauf an? Sie können nicht über Typkonstruktoren in Java abstrahieren, Sie können auch den Rückgabetyp nicht überladen, daher können Sie wahrscheinlich keinen Java-Code schreiben, der im Monad-Konstruktor polymorph ist. – Ingo