On Fri, Oct 15, 2004 at 07:54:46PM -0700, oleg@pobox.com wrote:
Andrew Pimlott wrote:
I want values in my existential type to denote, for some monad, a monadic operation and a way to run the monad. Except, I want it mix the operation with operations in another monad, so it use a monad transformer.
I'm afraid, that phrase was a little misleading. It seems that you meant: - encapsulate one _specific_ monad transformer - to be able to apply it to _any_ (not some!) monad
Yes. I wrote that quickly (grammar mistakes too) and thought the code would make it clear. But it would have been better to make the words precise.
data Bar a m = forall t. (MonadTrans t, Monad (t m)) => Bar (t m a -> m a) (t m Int)
data Foo = Foo (forall a m. Monad m => Bar a m)
Wow, very nice. Just do it in two steps! Thank you for this enlightening solution. Andrew