Ist es sinnvoll, in einem Monad mehrere Methoden flatMap
(oder /bind
in Haskell) zu definieren? Die wenigen Monaden, die ich tatsächlich verwende (Option
, Try
, Either
Projektionen) definieren nur eine flatMap-Methode.Mehrere FlatMap-Methoden für eine einzelne Monade?
Zum Beispiel könnte es sinnvoll sein, eine flatMap
Methode auf Option
zu definieren, die eine Funktion nehmen würde, die eine Try
erzeugt? So dass Option[Try[User]]
zum Beispiel als Option[User]
abgeflacht wäre? (Unter Berücksichtigung der Ausnahme ist kein Problem ...)
Oder eine Monade sollte nur eine flatMap
Methode definieren, wobei eine Funktion, die die gleiche Art von Monade produziert? Ich denke, in diesem Fall würden die Either
Projektionen nicht Monaden sein? Sind sie?
@ om-nom-nom und Liste ist dann eine Monade? Übrigens kann ich nicht finden, wie es für 'List [Option [_]]' funktioniert, da Option keine GenTraversableOnce ist –
'Entweder' ist eine Monade über seine beiden Typvariablen. Ist es das wonach Sie fragen? –