Let's say I have a number of functions:
f :: a -> Maybe a
g :: a -> Maybe a
h :: a -> Maybe a
And I want to compose them in the following way: If f returns Nothing, compute g. If g returns Nothing, compute h. If any of them compute Just a, stop the chain. And the whole composition (h . g . f) should of course return Maybe a.
This is the reverse of the typical use of the Maybe monad, where typically you stop computing if Nothing is returned.
What's the Haskell idiom for chaining computations like this?
question from:
https://stackoverflow.com/questions/5606228/using-the-maybe-monad-in-reverse 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…