Disons que j'ai un certain nombre de fonctions:Utilisation de la Monade Peut-être en « inverse »
f :: a -> Maybe a
g :: a -> Maybe a
h :: a -> Maybe a
Et je veux les composer de la façon suivante: Si les rendements f Rien, compute g. Si g ne renvoie rien, calculez h. Si l'un d'entre eux calcule Just a, arrêtez la chaîne. Et la composition entière (h, g, f) devrait bien sûr revenir. Ceci est l'inverse de l'utilisation typique de la monade Maybe, où généralement vous arrêtez de calculer si Nothing n'est pas retourné.
Quel est le langage Haskell pour enchaîner des calculs comme celui-ci?
Alternative (l'analogue pour foncteurs Applicative) serait aussi bien que '(<|>)' est le même que 'mplus' pour Maybe. –
Ou vous pouvez utiliser Data.Generics.Aliases.orElse – Landei