{-# LANGUAGE GeneralizedNewtypeDeriving #-}
module Fresnel.Functor.Backwards
( Backwards(..)
) where

newtype Backwards f a = Backwards { Backwards f a -> f a
forwards :: f a }
  deriving (Functor (Backwards f)
a -> Backwards f a
Functor (Backwards f)
-> (forall a. a -> Backwards f a)
-> (forall a b.
    Backwards f (a -> b) -> Backwards f a -> Backwards f b)
-> (forall a b c.
    (a -> b -> c) -> Backwards f a -> Backwards f b -> Backwards f c)
-> (forall a b. Backwards f a -> Backwards f b -> Backwards f b)
-> (forall a b. Backwards f a -> Backwards f b -> Backwards f a)
-> Applicative (Backwards f)
Backwards f a -> Backwards f b -> Backwards f b
Backwards f a -> Backwards f b -> Backwards f a
Backwards f (a -> b) -> Backwards f a -> Backwards f b
(a -> b -> c) -> Backwards f a -> Backwards f b -> Backwards f c
forall a. a -> Backwards f a
forall a b. Backwards f a -> Backwards f b -> Backwards f a
forall a b. Backwards f a -> Backwards f b -> Backwards f b
forall a b. Backwards f (a -> b) -> Backwards f a -> Backwards f b
forall a b c.
(a -> b -> c) -> Backwards f a -> Backwards f b -> Backwards f c
forall (f :: * -> *).
Functor f
-> (forall a. a -> f a)
-> (forall a b. f (a -> b) -> f a -> f b)
-> (forall a b c. (a -> b -> c) -> f a -> f b -> f c)
-> (forall a b. f a -> f b -> f b)
-> (forall a b. f a -> f b -> f a)
-> Applicative f
forall (f :: * -> *). Applicative f => Functor (Backwards f)
forall (f :: * -> *) a. Applicative f => a -> Backwards f a
forall (f :: * -> *) a b.
Applicative f =>
Backwards f a -> Backwards f b -> Backwards f a
forall (f :: * -> *) a b.
Applicative f =>
Backwards f a -> Backwards f b -> Backwards f b
forall (f :: * -> *) a b.
Applicative f =>
Backwards f (a -> b) -> Backwards f a -> Backwards f b
forall (f :: * -> *) a b c.
Applicative f =>
(a -> b -> c) -> Backwards f a -> Backwards f b -> Backwards f c
<* :: Backwards f a -> Backwards f b -> Backwards f a
$c<* :: forall (f :: * -> *) a b.
Applicative f =>
Backwards f a -> Backwards f b -> Backwards f a
*> :: Backwards f a -> Backwards f b -> Backwards f b
$c*> :: forall (f :: * -> *) a b.
Applicative f =>
Backwards f a -> Backwards f b -> Backwards f b
liftA2 :: (a -> b -> c) -> Backwards f a -> Backwards f b -> Backwards f c
$cliftA2 :: forall (f :: * -> *) a b c.
Applicative f =>
(a -> b -> c) -> Backwards f a -> Backwards f b -> Backwards f c
<*> :: Backwards f (a -> b) -> Backwards f a -> Backwards f b
$c<*> :: forall (f :: * -> *) a b.
Applicative f =>
Backwards f (a -> b) -> Backwards f a -> Backwards f b
pure :: a -> Backwards f a
$cpure :: forall (f :: * -> *) a. Applicative f => a -> Backwards f a
$cp1Applicative :: forall (f :: * -> *). Applicative f => Functor (Backwards f)
Applicative, a -> Backwards f b -> Backwards f a
(a -> b) -> Backwards f a -> Backwards f b
(forall a b. (a -> b) -> Backwards f a -> Backwards f b)
-> (forall a b. a -> Backwards f b -> Backwards f a)
-> Functor (Backwards f)
forall a b. a -> Backwards f b -> Backwards f a
forall a b. (a -> b) -> Backwards f a -> Backwards f b
forall (f :: * -> *) a b.
Functor f =>
a -> Backwards f b -> Backwards f a
forall (f :: * -> *) a b.
Functor f =>
(a -> b) -> Backwards f a -> Backwards f b
forall (f :: * -> *).
(forall a b. (a -> b) -> f a -> f b)
-> (forall a b. a -> f b -> f a) -> Functor f
<$ :: a -> Backwards f b -> Backwards f a
$c<$ :: forall (f :: * -> *) a b.
Functor f =>
a -> Backwards f b -> Backwards f a
fmap :: (a -> b) -> Backwards f a -> Backwards f b
$cfmap :: forall (f :: * -> *) a b.
Functor f =>
(a -> b) -> Backwards f a -> Backwards f b
Functor)