Digamos que tengo una serie de funciones:Uso de la Mónada Tal vez en "marcha atrás"
f :: a -> Maybe a
g :: a -> Maybe a
h :: a -> Maybe a
Y quiero componerlos de la siguiente manera: Si la rentabilidad f Nada, calcular g. Si g no devuelve nada, calcule h. Si alguno de ellos calcula Solo a, detenga la cadena. Y toda la composición (h.g.f.) debería regresar, por supuesto. Tal vez a.
Esto es el reverso del uso típico de la mónada Maybe, donde normalmente se detiene la computación si no se devuelve nada.
¿Cuál es el modismo de Haskell para encadenar cálculos como este?
Alternativa (el análogo de funtores aplicativos) estaría bien también como '(<|>)' es lo mismo que 'mplus' para Maybe. –
O podría usar Data.Generics.Aliases.orElse – Landei