joint-0.1.9: Trying to compose non-composable
Safe HaskellSafe-Inferred
LanguageHaskell2010

Control.Joint.Abilities.Transformer

Documentation

type family Schema (t :: * -> *) = (r :: (* -> *) -> * -> *) | r -> t Source #

Instances

Instances details
type Schema Maybe Source # 
Instance details

Defined in Control.Joint.Effects.Maybe

type Schema (Either e) Source # 
Instance details

Defined in Control.Joint.Effects.Either

type Schema (Either e) = UT (Either e)
type Schema (Writer e) Source # 
Instance details

Defined in Control.Joint.Effects.Writer

type Schema (Writer e) = UT ((,) e)
type Schema (Reader e) Source # 
Instance details

Defined in Control.Joint.Effects.Reader

type Schema (Reader e) = TU ((->) e :: Type -> Type) :: (Type -> Type) -> Type -> Type
type Schema (State s) Source # 
Instance details

Defined in Control.Joint.Effects.State

type Schema (State s) = ((->) s :: Type -> Type) <:<.>:> (,) s

class Interpreted t => Transformer t where Source #

Methods

build :: Applicative u => t ~> (t :> u) Source #

unite :: Primary (Schema t u) a -> (t :> u) a Source #

Instances

Instances details
Transformer Maybe Source # 
Instance details

Defined in Control.Joint.Effects.Maybe

Methods

build :: forall (u :: Type -> Type). Applicative u => Maybe ~> (Maybe :> u) Source #

unite :: forall (u :: Type -> Type) a. Primary (Schema Maybe u) a -> (Maybe :> u) a Source #

Transformer (Either e) Source # 
Instance details

Defined in Control.Joint.Effects.Either

Methods

build :: forall (u :: Type -> Type). Applicative u => Either e ~> (Either e :> u) Source #

unite :: forall (u :: Type -> Type) a. Primary (Schema (Either e) u) a -> (Either e :> u) a Source #

Monoid e => Transformer (Writer e) Source # 
Instance details

Defined in Control.Joint.Effects.Writer

Methods

build :: forall (u :: Type -> Type). Applicative u => Writer e ~> (Writer e :> u) Source #

unite :: forall (u :: Type -> Type) a. Primary (Schema (Writer e) u) a -> (Writer e :> u) a Source #

Transformer (Reader e) Source # 
Instance details

Defined in Control.Joint.Effects.Reader

Methods

build :: forall (u :: Type -> Type). Applicative u => Reader e ~> (Reader e :> u) Source #

unite :: forall (u :: Type -> Type) a. Primary (Schema (Reader e) u) a -> (Reader e :> u) a Source #

Transformer (State s) Source # 
Instance details

Defined in Control.Joint.Effects.State

Methods

build :: forall (u :: Type -> Type). Applicative u => State s ~> (State s :> u) Source #

unite :: forall (u :: Type -> Type) a. Primary (Schema (State s) u) a -> (State s :> u) a Source #

newtype (t :> u) a infixr 3 Source #

Constructors

T 

Fields

Instances

Instances details
(Embedding t (Schema u (v :> (w :> (x :> (y :> (z :> (f :> h))))))), Embedding u (Schema v (w :> (x :> (y :> (z :> (f :> h)))))), Embedding v (Schema w (x :> (y :> (z :> (f :> h))))), Embedding w (Schema x (y :> (z :> (f :> h)))), Embedding x (Schema y (z :> (f :> h))), Embedding y (Schema z (f :> h)), Embedding z (Schema f h), Building f h, MonadTrans ((:>) t), MonadTrans ((:>) u), MonadTrans ((:>) v), MonadTrans ((:>) w), MonadTrans ((:>) x), MonadTrans ((:>) y), MonadTrans ((:>) z)) => Adaptable f (t :> (u :> (v :> (w :> (x :> (y :> (z :> (f :> h)))))))) Source # 
Instance details

Defined in Control.Joint.Abilities.Adaptable

Methods

adapt :: f ~> (t :> (u :> (v :> (w :> (x :> (y :> (z :> (f :> h)))))))) Source #

(Embedding t (Schema u (v :> (w :> (x :> (y :> (z :> (f :> h))))))), Embedding u (Schema v (w :> (x :> (y :> (z :> (f :> h)))))), Embedding v (Schema w (x :> (y :> (z :> (f :> h))))), Embedding w (Schema x (y :> (z :> (f :> h)))), Embedding x (Schema y (z :> (f :> h))), Embedding y (Schema z (f :> h)), Embedding z (Schema f h), Embedding f h, MonadTrans ((:>) t), MonadTrans ((:>) u), MonadTrans ((:>) v), MonadTrans ((:>) w), MonadTrans ((:>) x), MonadTrans ((:>) y), MonadTrans ((:>) z), MonadTrans ((:>) f)) => Adaptable h (t :> (u :> (v :> (w :> (x :> (y :> (z :> (f :> h)))))))) Source # 
Instance details

Defined in Control.Joint.Abilities.Adaptable

Methods

adapt :: h ~> (t :> (u :> (v :> (w :> (x :> (y :> (z :> (f :> h)))))))) Source #

(Embedding t (Schema u (v :> (w :> (x :> (y :> (z :> f)))))), Embedding u (Schema v (w :> (x :> (y :> (z :> f))))), Embedding v (Schema w (x :> (y :> (z :> f)))), Embedding w (Schema x (y :> (z :> f))), Embedding x (Schema y (z :> f)), Embedding y (Schema z f), Building z f, MonadTrans ((:>) t), MonadTrans ((:>) u), MonadTrans ((:>) v), MonadTrans ((:>) w), MonadTrans ((:>) x), MonadTrans ((:>) y), MonadTrans ((:>) z)) => Adaptable z (t :> (u :> (v :> (w :> (x :> (y :> (z :> f))))))) Source # 
Instance details

Defined in Control.Joint.Abilities.Adaptable

Methods

adapt :: z ~> (t :> (u :> (v :> (w :> (x :> (y :> (z :> f))))))) Source #

(Embedding t (Schema u (v :> (w :> (x :> (y :> (z :> f)))))), Embedding u (Schema v (w :> (x :> (y :> (z :> f))))), Embedding v (Schema w (x :> (y :> (z :> f)))), Embedding w (Schema x (y :> (z :> f))), Embedding x (Schema y (z :> f)), Embedding y (Schema z f), Embedding z f, MonadTrans ((:>) t), MonadTrans ((:>) u), MonadTrans ((:>) v), MonadTrans ((:>) w), MonadTrans ((:>) x), MonadTrans ((:>) y), MonadTrans ((:>) z)) => Adaptable f (t :> (u :> (v :> (w :> (x :> (y :> (z :> f))))))) Source # 
Instance details

Defined in Control.Joint.Abilities.Adaptable

Methods

adapt :: f ~> (t :> (u :> (v :> (w :> (x :> (y :> (z :> f))))))) Source #

(Embedding t (Schema u (v :> (w :> (x :> (y :> z))))), Embedding u (Schema v (w :> (x :> (y :> z)))), Embedding v (Schema w (x :> (y :> z))), Embedding w (Schema x (y :> z)), Embedding x (Schema y z), Building y z, MonadTrans ((:>) t), MonadTrans ((:>) u), MonadTrans ((:>) v), MonadTrans ((:>) w), MonadTrans ((:>) x)) => Adaptable y (t :> (u :> (v :> (w :> (x :> (y :> z)))))) Source # 
Instance details

Defined in Control.Joint.Abilities.Adaptable

Methods

adapt :: y ~> (t :> (u :> (v :> (w :> (x :> (y :> z)))))) Source #

(Embedding t (Schema u (v :> (w :> (x :> (y :> z))))), Embedding u (Schema v (w :> (x :> (y :> z)))), Embedding v (Schema w (x :> (y :> z))), Embedding w (Schema x (y :> z)), Embedding x (Schema y z), Embedding y z, MonadTrans ((:>) t), MonadTrans ((:>) u), MonadTrans ((:>) v), MonadTrans ((:>) w), MonadTrans ((:>) x), MonadTrans ((:>) y)) => Adaptable z (t :> (u :> (v :> (w :> (x :> (y :> z)))))) Source # 
Instance details

Defined in Control.Joint.Abilities.Adaptable

Methods

adapt :: z ~> (t :> (u :> (v :> (w :> (x :> (y :> z)))))) Source #

(Embedding t (Schema u (v :> (w :> (x :> y)))), Embedding u (Schema v (w :> (x :> y))), Embedding v (Schema w (x :> y)), Embedding w (Schema x y), Building x y, MonadTrans ((:>) t), MonadTrans ((:>) u), MonadTrans ((:>) v), MonadTrans ((:>) w)) => Adaptable x (t :> (u :> (v :> (w :> (x :> y))))) Source # 
Instance details

Defined in Control.Joint.Abilities.Adaptable

Methods

adapt :: x ~> (t :> (u :> (v :> (w :> (x :> y))))) Source #

(Embedding t (Schema u (v :> (w :> (x :> y)))), Embedding u (Schema v (w :> (x :> y))), Embedding v (Schema w (x :> y)), Embedding w (Schema x y), Embedding x y, MonadTrans ((:>) t), MonadTrans ((:>) u), MonadTrans ((:>) v), MonadTrans ((:>) w), MonadTrans ((:>) x)) => Adaptable y (t :> (u :> (v :> (w :> (x :> y))))) Source # 
Instance details

Defined in Control.Joint.Abilities.Adaptable

Methods

adapt :: y ~> (t :> (u :> (v :> (w :> (x :> y))))) Source #

(Embedding t (Schema u (v :> (w :> x))), Embedding u (Schema v (w :> x)), Embedding v (Schema w x), Building w x, MonadTrans ((:>) t), MonadTrans ((:>) u), MonadTrans ((:>) v)) => Adaptable w (t :> (u :> (v :> (w :> x)))) Source # 
Instance details

Defined in Control.Joint.Abilities.Adaptable

Methods

adapt :: w ~> (t :> (u :> (v :> (w :> x)))) Source #

(Embedding t (Schema u (v :> (w :> x))), Embedding u (Schema v (w :> x)), Embedding v (Schema w x), Embedding w x, MonadTrans ((:>) t), MonadTrans ((:>) u), MonadTrans ((:>) v), MonadTrans ((:>) w)) => Adaptable x (t :> (u :> (v :> (w :> x)))) Source # 
Instance details

Defined in Control.Joint.Abilities.Adaptable

Methods

adapt :: x ~> (t :> (u :> (v :> (w :> x)))) Source #

(Embedding t (Schema u v), Embedding t (Schema u (v :> w)), Embedding u (Schema v w), Embedding v w, MonadTrans ((:>) t), MonadTrans ((:>) u), MonadTrans ((:>) v)) => Adaptable w (t :> (u :> (v :> w))) Source # 
Instance details

Defined in Control.Joint.Abilities.Adaptable

Methods

adapt :: w ~> (t :> (u :> (v :> w))) Source #

(Embedding t (Schema u (v :> w)), Embedding u (Schema v w), MonadTrans ((:>) t), MonadTrans ((:>) u), Building v w) => Adaptable v (t :> (u :> (v :> w))) Source # 
Instance details

Defined in Control.Joint.Abilities.Adaptable

Methods

adapt :: v ~> (t :> (u :> (v :> w))) Source #

(Embedding t (Schema u v), Embedding u v, MonadTrans ((:>) t), MonadTrans ((:>) u)) => Adaptable v (t :> (u :> v)) Source # 
Instance details

Defined in Control.Joint.Abilities.Adaptable

Methods

adapt :: v ~> (t :> (u :> v)) Source #

(Embedding t (Schema u v), MonadTrans ((:>) t), Building u v) => Adaptable u (t :> (u :> v)) Source # 
Instance details

Defined in Control.Joint.Abilities.Adaptable

Methods

adapt :: u ~> (t :> (u :> v)) Source #

Building t u => Adaptable t (t :> u) Source # 
Instance details

Defined in Control.Joint.Abilities.Adaptable

Methods

adapt :: t ~> (t :> u) Source #

(Monad u, MonadTrans ((:>) t)) => Adaptable u (t :> u) Source # 
Instance details

Defined in Control.Joint.Abilities.Adaptable

Methods

adapt :: u ~> (t :> u) Source #

MonadTrans (Schema t) => MonadTrans ((:>) t) Source # 
Instance details

Defined in Control.Joint.Abilities.Transformer

Methods

lift :: Monad m => m a -> (t :> m) a #

(Transformer t, Monad (Schema t u)) => Monad (t :> u) Source # 
Instance details

Defined in Control.Joint.Abilities.Transformer

Methods

(>>=) :: (t :> u) a -> (a -> (t :> u) b) -> (t :> u) b #

(>>) :: (t :> u) a -> (t :> u) b -> (t :> u) b #

return :: a -> (t :> u) a #

Functor (Schema t u) => Functor (t :> u) Source # 
Instance details

Defined in Control.Joint.Abilities.Transformer

Methods

fmap :: (a -> b) -> (t :> u) a -> (t :> u) b #

(<$) :: a -> (t :> u) b -> (t :> u) a #

(Transformer t, Applicative (Schema t u)) => Applicative (t :> u) Source # 
Instance details

Defined in Control.Joint.Abilities.Transformer

Methods

pure :: a -> (t :> u) a #

(<*>) :: (t :> u) (a -> b) -> (t :> u) a -> (t :> u) b #

liftA2 :: (a -> b -> c) -> (t :> u) a -> (t :> u) b -> (t :> u) c #

(*>) :: (t :> u) a -> (t :> u) b -> (t :> u) b #

(<*) :: (t :> u) a -> (t :> u) b -> (t :> u) a #

(Transformer t, Alternative (Schema t u)) => Alternative (t :> u) Source # 
Instance details

Defined in Control.Joint.Abilities.Transformer

Methods

empty :: (t :> u) a #

(<|>) :: (t :> u) a -> (t :> u) a -> (t :> u) a #

some :: (t :> u) a -> (t :> u) [a] #

many :: (t :> u) a -> (t :> u) [a] #

(Interpreted (Schema t u), Transformer t) => Interpreted (t :> u) Source # 
Instance details

Defined in Control.Joint.Abilities.Transformer

Associated Types

type Primary (t :> u) a Source #

Methods

run :: (t :> u) a -> Primary (t :> u) a Source #

type Primary (t :> u) a Source # 
Instance details

Defined in Control.Joint.Abilities.Transformer

type Primary (t :> u) a = Primary (Schema t u) a