Hey,

I want to write a function, which is basically a concatenation of functions of type “IO (Maybe a)”.
When they all where of type “Maybe a”, no Problem I would simple use the Maybe monad.

func :: Maybe c
func = do
  a <- f1
  b <- d2 a
  ...

but now they are of type “IO (Maybe a)”. Is there some way of combing these in a similar smart way?

Thanks!
Nathan