On Mon, Mar 4, 2013 at 12:07 AM, Ertugrul Söylemez <e...@ertes.de> wrote:
> Arie Peterson <ar...@xs4all.nl> wrote: > > > Would anyone have a problem with a deprecation of > > MonadCatchIO-transformers, and a failure to update it to work with a > > base without 'block' and 'unblock'? > > Yes. This is a simplified variant of a monad I use: > > newtype Continue f m a = Continue (m (Maybe a, f (Continue f a))) > > It's related to Cofree and has a valid and very straightforward > MonadCatchIO instance. However, it's probably impossible to write a > valid MonadTransControl/MonadBaseControl instance for it. > > So I kindly ask you not to deprecate MonadCatchIO. The reason I'm > hesitant about moving to monad-control is that it's hard to understand > and also very difficult to define for CPS monads. It is commonly > believed to be impossible. > You can always cast the continuation to a dynamic type and cast it back later. Doing so would typically require additional constraints, however if you're trying to make an instance for MonadTransControl that's unfortunately not possible (you'd need a Typeable constraint on the monad parameter, but it's not in scope). Lacking an appropriate MonadTransControlWithTypeable class, it's certainly possible to fall back to various low-level, highly-dubious constructs. Which I of course implemented without hesitation :grin > Also I've seen at least one article about the incorrectness of > monad-control. That's one further reason I like to avoid it. > I'd appreciate a link if anyone could manage to find it. I haven't seen any criticisms of monad-control. John L.
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe