Ha senso definire più metodi flatMap
(o >>=
/bind
in Haskell) in una Monade? Le pochissime monadi che uso effettivamente (Option
, Try
, proiezioni) definiscono solo un metodo flatMap.Metodi di flatMap multipli per una singola monade?
ad esempio, può aver senso definire un metodo flatMap
su Option
che potrebbe assumere una funzione producendo un Try
? In modo che Option[Try[User]]
venga appiattito come Option[User]
per esempio? (Considerando perdere l'eccezione non è un problema ...)
Oppure monade deve solo definire un metodo flatMap
, prendendo una funzione che produce lo stesso tipo di monad? Immagino che in questo caso le proiezioni Either
non sarebbero monade? Sono loro?
@ om-nom-nom e La lista è una Monade allora? Tra l'altro non riesco a trovare il modo in cui funziona per 'List [Option [_]]' poiché Option non è un GenTraversableOnce –
'Oither' è una monade su entrambe le sue variabili di tipo. E 'questo quello che stai chiedendo? –