On Feb 6, 2008 1:49 PM, Lutz Donnerhacke <lutz at iks-jena.de> wrote: > inv m = if m == mzero then return () else mzero `asTypeOf` m Interesting! > :t inv inv :: (MonadPlus m, Eq (m ())) => m () -> m () The 'Eq' constraint on 'm ()' is a bit problemetic I think in case 'm' is a function like a 'State'. Thanks, Bas