Est-il sensé de définir plusieurs méthodes flatMap
(ou >>=
/bind
dans Haskell) dans une Monade? Les très rares monades que j'utilise réellement (projections Option
, Try
, Either
) ne définissent qu'une seule méthode flatMap.Plusieurs méthodes flatMap pour une seule monade?
Par exemple, est-il possible de définir une méthode flatMap
sur Option
qui prendrait une fonction produisant un Try
? Alors que Option[Try[User]]
serait aplati comme Option[User]
par exemple? (Considérant que la perte de l'exception n'est pas un problème ...)
Ou une monade doit simplement définir une méthode flatMap
, en prenant une fonction qui produit le même type de monade? Je suppose que dans ce cas, les projections Either
ne seraient pas des monades? Sont-ils?
@ om-nom-nom et La liste est une Monade alors? Par ailleurs, je ne peux pas trouver comment cela fonctionne pour 'List [Option [_]]' depuis Option n'est pas un GenTraversableOnce –
'Sither' est une monade sur ses deux variables de type. Est-ce ce que vous demandez? –