Oh, yeah. Thanks, Sjoerd.

I wonder if there's some way not to require Monad. Some sort of
ApplicativeFix instead. Hm.

-- Conal

On Wed, Jun 6, 2012 at 2:43 PM, Sjoerd Visscher <sjo...@w3future.com> wrote:

> If there would be a package where this could be in it would be
> contravariant[1], but it isn't.
>
> > > newtype Q' p f a = Q' (p a -> f a)
>
> This compiles:
>
> > instance (Contravariant p, Functor m, MonadFix m) => Applicative (Q' p
> m) where
> >   pure a = Q' (pure (return a))
> >   Q' fs <*> Q' as = Q' $ \r -> do
> >     rec
> >       f <- fs (contramap ($ a) r)
> >       a <- as (contramap (f $) r)
> >     return $ f a
>
> [1] http://hackage.haskell.org/package/contravariant
>
> --
> Sjoerd Visscher
> https://github.com/sjoerdvisscher/blog
>
>
>
>
>
>
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to