[Haskell-cafe] Re: Monad transformers

Max Vasin max-appolo at mail.ru
Sun May 8 14:19:28 EDT 2005


On Sun, 8 May 2005 18:34:37 +0200, Tomasz Zielonka <tomasz.zielonka at gmail.com> said:

> On Sun, May 08, 2005 at 07:54:43PM +0400, Max Vasin wrote:
>> Hello!
>> 
>> Suppose we have functions
>> 
>> f :: ReaderT env monad1 rtype g :: Reader env rtype
>> 
>> and we need to call g from f.
>> 
>> Currently I write something like
>> 
>> f = do env <- ask let r = runReader g env doSmth r
>> 
>> I don't like doing it this way (I need to get environment and
>> explicitly pass it). Is there another way to get things done?

> How about:

>     toReaderT :: (Monad m) => Reader r a -> ReaderT r m a 
>     toReaderT (Reader f) = ReaderT (return . f)

Thanks. 

--
WBR,
Max Vasin.



More information about the Haskell-Cafe mailing list