Has anyone investigated monadic call-with-current-continuation in Haskell? Given this: class (Monad m) => PeirceMonad m where { peirceM :: ((a -> m b) -> m a) -> m a; }; ...which Monads can be made PeirceMonads? The corresponding non-monadic function: peirce :: ((a -> b) -> a) -> a; probably can't be defined. -- Ashley Yakeley, Seattle WA