!e a?      !"#$%&'()* + , - . / 0 1 2 3 4 5 6789:;<=>Safe+,-;=>?AFPQSTUV ?morphisms-functors When providing a new instance, you should ensure it satisfies the two laws: * Identity morphism: contramap identity "a identity * Composition of morphisms: contramap f . contramap g "a contramap (g . f)morphisms-functorsInfix version of morphisms-functorsPrefix version of morphisms-functors7Replace all locations in the output with the same valuemorphisms-functorsFlipped version of morphisms-functorsFill the input of evaluation444Safe+,-;=>?AFPQSTUVxmorphisms-functors When providing a new instance, you should ensure it satisfies the two laws: * Identity morphism: comap identity "a identity * Composition of morphisms: comap (f . g) "a comap f . comap gmorphisms-functorsInfix version of morphisms-functorsPrefix version of  morphisms-functors6Replace all locations in the input with the same value morphisms-functorsFlipped version of  morphisms-functors!Discards the result of evaluation    4 4 4Safe+,-;=>?AFPQSTUV   0 000Safe+,-;=>?AFPQSTUVmorphisms-functors When providing a new instance, you should ensure it satisfies the three laws: * Duplication interchange: comap (comap f) . duplicate "a duplicate . comap f * Extension interchange: extend f "a comap f . duplicatemorphisms-functorsInfix and flipped version of , the dual of >>=morphisms-functorsFlipped version of >>=, the dual of =<<morphisms-functorsPrefix and flipped version of , the dual of bindmorphisms-functors&Clone existing structure, the dual of join11Safe+,-;=>?AFPQSTUV$`morphisms-functors %Let f :: Distributive g => (a -> g b) When providing a new instance, you should ensure it satisfies the two laws: * Identity morphism: distribute . distribute "a identity * Interchange collection: collect f "a distribute . comap fmorphisms-functorsInfix version of morphisms-functorsPrefix version of morphisms-functors The dual of sequenceSafe+,-;=>?AFPQSTUV+morphisms-functors rWhen providing a new instance, you should ensure it satisfies the one law: * Interchange: t >>= f = join (f <$> t)morphisms-functorsInfix and flipped version of , the dual of =>>morphisms-functorsFlipped version of , the dual of <<=morphisms-functorsPrefix and flipped version of , the dual of extendmorphisms-functors$Merge effects/contexts, the dual of  duplicate11Safe+,-;=>?AFPQSTUV2morphisms-functors When providing a new instance, you should ensure it satisfies the four laws: * Left adjunction identity: phi counit "a identity * Right adjunction identity: psi unit "a identity * Left adjunction interchange: phi f "a comap f . eta * Right adjunction interchange: psi f "a epsilon . comap f morphisms-functorsLeft adjunction!morphisms-functorsRight adjunction" !#" !#Safe+,-;=>?AFPQSTUV<'$morphisms-functors When providing a new instance, you should ensure it satisfies the three laws: * Composition: (.) <$> u <*> v <*> w "a u <*> (v <*> w) * Left interchange: x <*> (f <$> y) "a (. f) <$> x <*> y * Right interchange: f <$> (x <*> y) "a (f .) <$> x <*> y%morphisms-functorsInfix version of &&morphisms-functorsPrefix version of %'morphisms-functors<Sequence actions, discarding the value of the first argument(morphisms-functors=Sequence actions, discarding the value of the second argument)morphisms-functorsRepeat an action indefinitely$%'(&)$%'(&)%4'4(4 Safe+,-;=>?AFPQSTUVB*morphisms-functors When providing a new instance, you should ensure it satisfies the two laws: * Associativity of <+>: (x <+> y) <+> z "a x <+> (y <+> z) * Left-distributes <$> over <+>: f <$> (x <+> y) "a (f <$> x) <+> (f <$> y)+morphisms-functorsInfix version of ,,morphisms-functorsPrefix version of +*+,*+,+3 Safe+,-;=>?AFPQSTUVC-.-. Safe+,-;=>?AFPQSTUVC/0/0 Safe+,-;=>?AFPQSTUVI1morphisms-functors ]Let f :: (Pointable t, Bindable t) => t a -> b Let g :: (Pointable t, Bindable t) => t a -> b When using this constraint, you should ensure it satisfies the three laws: * Left identity: extend extract "a identity * Right identity: extract . extend f "a f * Associativity: extend f . extend g "a extend (f . extend g)11 Safe+,-;=>?AFPQSTUVP2morphisms-functors When providing a new instance, you should ensure it satisfies the two laws: Identity morphisms: invmap identity identity = identity Composition of morphisms: invmap g j . invmap f h = invmap (g . f) (h . j)3morphisms-functorsInfix version of 44morphisms-functorsPrefix version of 35morphisms-functorsFlipped version of 3253425343454Safe+,-;=>?AFPQSTUVQ 6767Safe+,-;=>?AFPQSTUVZ98morphisms-functors gLet f :: (Applicative t, Applicative g) => t a -> u a Let p :: (Pointable t, Pointable g) => t a -> u a  When providing a new instance, you should ensure it satisfies the four laws: * Naturality of traversing: g . traverse f "a traverse (g . f) * Naturality of sequencing: f . sequence = sequence . comap f * Preserving point: p (point x) "a point x * Preserving apply: f (x <*> y) "a f x <*> f y9morphisms-functorsInfix version of ::morphisms-functorsPrefix version of 9;morphisms-functors The dual of  distribute8;9:8;9:Safe+,-;=>?AFPQSTUV`<morphisms-functors Let f :: (Pointable t, Bindable t) => a -> t a Let g :: (Pointable t, Bindable t) => a -> t a Let h :: (Pointable t, Bindable t) => t a When using this constraint, you should ensure it satisfies the three laws: * Left identity: point a >>= f "a f a * Right identity: h >>= point "a h * Associativity: h >>= (\x -> f x >>= g) "a (h >>= f) >>= g<<Safe+,-;=>?AFPQSTUVa=>>=? !"#$%&'()*+,-./0123456789:; < = > ? @ A B C D E F GHIJKLMNOPQ/morphisms-functors-0.1.2-HFaLl8UcaXw4ygaAms8SPVControl.Functor.ContravariantControl.Functor.CovariantControl.Functor.Composition&Control.Functor.Composition.Extendable(Control.Functor.Composition.Distributive$Control.Functor.Composition.Bindable#Control.Functor.Composition.AdjointControl.Functor.ApplicativeControl.Functor.AlternativeControl.Functor.ExclusiveControl.Functor.Extractable#Control.Functor.Composition.ComonadControl.Functor.InvariantControl.Functor.Pointable'Control.Functor.Composition.Traversable!Control.Functor.Composition.MonadControl.Transformation.Natural Contravariant>$< contramap>$$<full Covariant<$>comap<$$>void%.%%.::.%:.: Extendable=>><<=extend duplicate Distributive>>-collect distributeBindable>>==<<bindjoin-|Adjointphipsietaepsilon Applicative<*>apply*><*forever Alternative<+>alter Exclusive exclusive ExtractableextractComonad Invariant<$<invmap>$> Pointablepoint Traversable->>traversesequenceMonad~>Natural