Usando o Maybe Monad em “reverso”

Digamos que eu tenha várias funções:

f :: a -> Maybe a
g :: a -> Maybe a
h :: a -> Maybe a

E eu quero compor da seguinte maneira: Se f retornar Nothing, calcule g. Se g retornar Nada, calcule h. Se algum deles calcular Apenas a, pare a corrente. E toda a composição (h. G. F) deve, obviamente, retornar Talvez a.

Este é o inverso do uso típico da mônada Maybe, onde normalmente você para de calcular se nada é retornad

Qual é o idioma Haskell para encadear cálculos como est

questionAnswers(3)

yourAnswerToTheQuestion