
You are absolutely right! I missed that ‘let’. And it does work, thanks. On the other hand it is still not what I intended, so I decided not to use Monads in this particular case. I wanted to represent values that can fail and that have complete history of errors. So that if I calculate c = (liftM2 (+)) a b and if *both* a and b have failed, c would also fail plus it would have history of errors form a and b (and potentially it’s own). I tried to do this by combining Maybe and Output monads. Now I realize that as long as I am using liftM2 it is not possible to have history of errors from a and b - only form a. And as I moved to custom lift functions I realized I didn’t need monads in the first place. Anyway, thanks for your help, it is very much appreciated. Regards, Pavel. I didn’t know you can have ‘let’ without ‘in’ in do expressions, nice!