> Yes, but this StateT type application cannot be equal to the outer StateT type > application because this would result in an infinite type which Haskell > doesn't support. Example: > > StateT Int (StateT Int (StateT Int ...)) I see. I was trying to justify the lazy pattern in this mplus, now i'm at end of my wit:-( Thanks, Fan