
10 Jul
2009
10 Jul
'09
11:34 a.m.
I'm trying to make a function that uses another monadic function inside a preexisting monad, and I'm having trouble. Basically my problem boils down to this. I have three monadic functions with the following types: f :: A -> M B g :: B -> N C h :: C -> M D (M and N are in the monad class) I want a function i where i :: A -> M (N D) the best I can come up with is: i :: A -> M (N (M D)) i a = liftM (liftM h) =<< (return . g) (f a) I'm starting to feel pretty sure that what I'm going for is impossible. Is this the case?