proposal #2461: add Traversable generalizations of
mapAccumL?and mapAccumR
Michael Karcher
usenet at mkarcher.dialup.fu-berlin.de
Fri Jul 25 10:12:26 EDT 2008
David Menendez <dave at zednenem.com> wrote:
> Incidentally, is there a Backward applicative functor transfomer
> defined anywhere?
>
> newtype Backward f a = Backward { runBackward :: f a } deriving Functor
>
> instance Applicative f => Applicative (Backward f) where
> pure = Backward . pure
> (Backward f) <*> (Backward a) = Backward (f <**> a)
My intuitive typechecker doesn't accept that. And GHCi 6.8.2 seems to agree
(I had to enable GeneralizedNewtypeDeriving for obvious reasons).
/tmp/foo.hs:7:0:
Occurs check: cannot construct the infinite type: a = (a -> b) -> b
When trying to generalise the type inferred for `<*>'
Signature type: forall (f :: * -> *).
(Applicative f) =>
forall a1 b1.
Backward f (a1 -> b1) -> Backward f a1 -> Backward f b1
Type to generalise: forall a1 b1.
Backward f (a1 -> b1) -> Backward f a1 -> Backward f b1
In the instance declaration for `Applicative (Backward f)'
Did I misunderstand something?
Regards,
Michael Karcher
More information about the Libraries
mailing list