On 8/22/07, Ian Lynagh <[EMAIL PROTECTED]> wrote:
>
> On Wed, Aug 22, 2007 at 01:27:00PM -0500, Rich Neswold wrote:
> >
> > > newtype App a = App (ReaderT Connection (CGIT IO) a)
> > >    deriving (Monad, MonadIO, MonadReader Connection)
> >
> > Unfortunately, when another module tries to actually use the monad, I
> > get warnings about "No instance for (MonadCGI App)". I tried making an
> > instance:
> >
> > > instance MonadCGI App where
> > >     cgiAddHeader = ?
> > >     cgiGet = ?
>
> You have three choices:
>
> 1:
>
> 2:
>
> 3:
> Provide a single instance for App that does the whole thing:
> instance MonadCGI App where
>     cgiAddHeader n v = App $ lift $ cgiAddHeader n v
>     cgiGet x = App $ lift $ cgiGet x
> This one you would obviously have to change if you added a StateT.
>

Bingo! Method #3 works beautifully! I missed the
using-lift-with-the-constructor permutation.

Thanks for your help!

-- 
Rich

JID: [EMAIL PROTECTED]
AIM: rnezzy
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to