packages feed

pandora 0.5.5 → 0.5.6

raw patch · 95 files changed

+811/−612 lines, 95 files

Files

CHANGELOG.md view
@@ -789,3 +789,34 @@ * Define `:*+*:` type operator  # 0.5.6+* Define `until` method for repeating actons until failure+* Define `definitely` method to simplify `State` transformer+* Define `magnify` method to `zoom` states in `State` transformers+* Rename `<-||-` length encoding operators to `<<-|-`+* Define  priority and fixity for `-+` length encoding operators+* Define `<<-|-|-` length encoding operators+* Define `:++*:` type operator+* Rename `<--` type synonymous of `Flip (->)` to `--<`+* Define generalised `Functor` typeclass+* Define `Covariant_` type synonymous for `Functor` typeclass+* Define `Contravariant_` type synonymous for `Functor` typeclass+* Define `Kleisli` morphism+* Define `Bindable_` type synonymous for `Functor` typeclass+* Rename `Pattern.Transformer` module to `Pattern.Transformation`+* Define `Component` experimental typeclass+* Define `Transformation` experimental typeclass+* Define experimental `Liftable_` type alias+* Define experimental `lift_` method+* Define experimental `Lowerable_` type alias+* Define experimental `lower_` method+* Define `Tensor` product in `Morphism` module+* Define experimental `Semimonoidal_` type alias+* Define `Operation` umbrella module in `Pattern`+* Move `One` module from `Algebraic` to `Operation`+* Move `Zero` module from `Algebraic` to `Operation`+* Move `Exponential` module from `Algebraic` to `Operation`+* Move `<:*:>`, `<:*:<`, `>:*:>`, `>:*:<` to `Algebraic` module+* Move `Product` module from `Algebraic` to `Operation`+* Move `Unit` type family to `Unit` module++# 0.5.7
Pandora/Core/Interpreted.hs view
@@ -6,7 +6,7 @@ import Pandora.Pattern.Morphism.Trip (Trip (Trip)) import Pandora.Pattern.Semigroupoid (Semigroupoid ((.))) import Pandora.Pattern.Functor.Covariant (Covariant ((<-|-)))-import Pandora.Pattern.Transformer.Liftable (Liftable (lift))+import Pandora.Pattern.Transformation.Liftable (Liftable (lift))  infixr 2 =#-, -#= 
Pandora/Paradigm/Algebraic.hs view
@@ -1,13 +1,11 @@ {-# OPTIONS_GHC -fno-warn-orphans #-}-module Pandora.Paradigm.Algebraic (module Exports, type (:+*+:), type (:*+*:)) where+module Pandora.Paradigm.Algebraic (module Exports, type (<:*:>), type (<:*:<), type (>:*:>), type (>:*:<), type (:+*+:), type (:*+*:), type (:++*:), (<:*:>)) where  import Pandora.Paradigm.Algebraic.Functor as Exports-import Pandora.Paradigm.Algebraic.Exponential as Exports-import Pandora.Paradigm.Algebraic.Product as Exports-import Pandora.Paradigm.Algebraic.Sum as Exports-import Pandora.Paradigm.Algebraic.Zero as Exports-import Pandora.Paradigm.Algebraic.One as Exports+import Pandora.Pattern.Operation.Product as Exports+import Pandora.Pattern.Operation.Sum as Exports +import Pandora.Core.Functor (type (>>>>>>)) import Pandora.Core.Interpreted (Interpreted ((<~))) import Pandora.Pattern.Morphism.Flip (Flip (Flip)) import Pandora.Pattern.Morphism.Straight (Straight (Straight))@@ -19,12 +17,29 @@ import Pandora.Pattern.Functor.Monoidal (Monoidal (unit)) import Pandora.Pattern.Functor.Comonad (Comonad) import Pandora.Pattern.Functor.Traversable (Traversable ((<-/-)))-import Pandora.Paradigm.Schemes.T_U (T_U (T_U))+import Pandora.Pattern.Operation.Exponential (type (-->), type (--<))+import Pandora.Pattern.Operation.One (One (One))+import Pandora.Paradigm.Schemes.T_U (T_U (T_U), type (<:.:>), type (>:.:>), type (<:.:<), type (>:.:<)) -instance (Semimonoidal (<--) (:*:) (:*:) t, Semimonoidal (<--) (:*:) (:*:) u) => Semimonoidal (<--) (:*:) (:*:) (t <:*:> u) where+infixr 5 <:*:>++type (<:*:>) t u = t <:.:> u >>>>>> (:*:)+type (>:*:>) t u = t >:.:> u >>>>>> (:*:)+type (<:*:<) t u = t <:.:< u >>>>>> (:*:)+type (>:*:<) t u = t >:.:< u >>>>>> (:*:)++type (<:+:>) t u = t <:.:> u >>>>>> (:+:)+type (>:+:>) t u = t >:.:> u >>>>>> (:+:)+type (<:+:<) t u = t <:.:< u >>>>>> (:+:)+type (>:+:<) t u = t >:.:< u >>>>>> (:+:)++(<:*:>) :: t a -> u a -> t <:*:> u >>>>>> a+(<:*:>) xs ys = T_U <--- xs :*: ys++instance (Semimonoidal (--<) (:*:) (:*:) t, Semimonoidal (--<) (:*:) (:*:) u) => Semimonoidal (--<) (:*:) (:*:) (t <:*:> u) where 	mult = Flip <-- \(T_U lrxys) -> 		-- TODO: I need matrix transposing here-		let ((lxs :*: lys) :*: (rxs :*: rys)) = (mult @(<--) <~) <-||-- (mult @(<--) <~) <-|- lrxys in+		let ((lxs :*: lys) :*: (rxs :*: rys)) = (mult @(--<) <~) <<-|-- (mult @(--<) <~) <-|- lrxys in 		T_U (lxs :*: rxs) :*: T_U (lys :*: rys)  instance (Semimonoidal (-->) (:*:) (:*:) t, Semimonoidal (-->) (:*:) (:*:) u) => Semimonoidal (-->) (:*:) (:*:) (t <:*:> u) where@@ -51,8 +66,8 @@ instance Monoidal (-->) (-->) (:*:) (:*:) ((->) e) where 	unit _ = Straight <-- constant . (<~ One) -instance Semimonoidal (<--) (:*:) (:*:) ((->) e) where-	mult :: ((e -> a) :*: (e -> b)) <-- (e -> a :*: b)+instance Semimonoidal (--<) (:*:) (:*:) ((->) e) where+	mult :: ((e -> a) :*: (e -> b)) --< (e -> a :*: b) 	mult = Flip <-- \f -> attached . f :*: extract . f  instance Semimonoidal (-->) (:*:) (:+:) ((:+:) e) where@@ -71,20 +86,22 @@ instance Monoidal (-->) (-->) (:*:) (:*:) ((:+:) e) where 	unit _ = Straight <-- Adoption . (<~ One) -instance Semimonoidal (<--) (:*:) (:*:) ((:*:) s) where+instance Semimonoidal (--<) (:*:) (:*:) ((:*:) s) where 	mult = Flip <-- \(s :*: x :*: y) -> (s :*: x) :*: (s :*: y) -instance Monoidal (<--) (-->) (:*:) (:*:) ((:*:) s) where+instance Monoidal (--<) (-->) (:*:) (:*:) ((:*:) s) where 	unit _ = Flip <-- \(_ :*: x) -> Straight (\_ -> x)  instance Comonad (->) ((:*:) s) where -instance Semimonoidal (<--) (:*:) (:*:) (Flip (:*:) a) where+instance Semimonoidal (--<) (:*:) (:*:) (Flip (:*:) a) where 	mult = Flip <-- \(Flip ((sx :*: sy) :*: r)) -> Flip (sx :*: r) :*: Flip (sy :*: r) -instance Monoidal (<--) (-->) (:*:) (:*:) (Flip (:*:) a) where+instance Monoidal (--<) (-->) (:*:) (:*:) (Flip (:*:) a) where 	unit _ = Flip <-- \(Flip (s :*: _)) -> Straight (\_ -> s)  type (:+*+:) l r = (l :+: r) :*: (r :+: l)  type (:*+*:) l r = (l :*: r) :+: (r :*: l)++type (:++*:) l r = (l :+: r) :+: (l :*: r)
− Pandora/Paradigm/Algebraic/Exponential.hs
@@ -1,69 +0,0 @@-{-# OPTIONS_GHC -fno-warn-orphans #-}-module Pandora.Paradigm.Algebraic.Exponential where--import Pandora.Pattern.Betwixt (Betwixt)-import Pandora.Pattern.Semigroupoid (Semigroupoid ((.)))-import Pandora.Pattern.Category (Category ((<--), identity))-import Pandora.Pattern.Kernel (Kernel (constant))-import Pandora.Pattern.Functor.Covariant (Covariant ((<-|-)))-import Pandora.Pattern.Functor.Contravariant (Contravariant ((>-|-)))-import Pandora.Pattern.Functor.Distributive (Distributive ((-<<)))-import Pandora.Pattern.Functor.Bindable (Bindable ((=<<)))-import Pandora.Pattern.Object.Semigroup (Semigroup ((+)))-import Pandora.Pattern.Object.Ringoid (Ringoid ((*)))-import Pandora.Pattern.Morphism.Flip (Flip (Flip))-import Pandora.Pattern.Morphism.Straight (Straight (Straight))--infixr 7 .:..-infixr 9 %-infixl 1 &--type instance Betwixt (->) (->) = (->)--instance Semigroupoid (->) where-	f . g = \x -> f (g x)--instance Category (->) where-	identity x = x--instance Kernel (->) where-	constant x _ = x--instance Covariant (->) (->) ((->) a) where-	(<-|-) = (.)--instance Distributive (->) (->) ((->) e) where-	f -<< g = \e -> f % e <-|- g--instance Bindable (->) ((->) e) where-	f =<< g = \x -> f <-- g x <-- x--instance Semigroup r => Semigroup (e -> r) where-	f + g = \e -> f e + g e--instance Ringoid r => Ringoid (e -> r) where-	f * g = \e -> f e * g e--type (<--) = Flip (->)--instance Contravariant (->) (->) ((<--) a) where-	f >-|- Flip g = Flip <-- g . f--type (-->) = Straight (->)--instance Covariant (->) (->) ((-->) b) where-	f <-|- Straight g = Straight <-- f . g--(.:..) :: (Covariant (->) target (v a), Semigroupoid v) => v c d -> target (v a (v b c)) (v a (v b d))-(.:..) f = (<-|-) (f .)--{-# INLINE (%) #-}-(%) :: (a -> b -> c) -> b -> a -> c-(%) f x y = f y x--{-# INLINE (&) #-}-(&) :: a -> (a -> b) -> b-x & f = f x--fix :: (a -> a) -> a-fix f = let x = f x in x
Pandora/Paradigm/Algebraic/Functor.hs view
@@ -2,6 +2,7 @@ module Pandora.Paradigm.Algebraic.Functor where  import Pandora.Core.Interpreted (Interpreted ((<~), (<~~~), (-#=), run))+import Pandora.Pattern.Betwixt (Betwixt) import Pandora.Pattern.Semigroupoid ((.)) import Pandora.Pattern.Category ((<--)) import Pandora.Pattern.Kernel (constant)@@ -11,41 +12,38 @@ import Pandora.Pattern.Functor.Covariant (Covariant ((<-|-), (<-|--), (<-|---), (<-|-|-))) import Pandora.Pattern.Functor.Contravariant (Contravariant ((>-|-))) import Pandora.Pattern.Functor.Semimonoidal (Semimonoidal (mult))-import Pandora.Pattern.Functor.Monoidal (Monoidal (unit), Unit)+import Pandora.Pattern.Functor.Monoidal (Monoidal (unit)) import Pandora.Pattern.Functor.Traversable (Traversable ((<-/-))) import Pandora.Pattern.Functor.Adjoint (Adjoint ((-|), (|-)))-import Pandora.Paradigm.Algebraic.Exponential (type (-->), type (<--), (&))-import Pandora.Paradigm.Algebraic.Product ((:*:) ((:*:)))-import Pandora.Paradigm.Algebraic.Sum ((:+:) (Option, Adoption))-import Pandora.Paradigm.Algebraic.Zero (Zero, absurd)-import Pandora.Paradigm.Algebraic.One (One (One))+import Pandora.Pattern.Operation.One (One (One))+import Pandora.Pattern.Operation.Zero (Zero, absurd)+import Pandora.Pattern.Operation.Exponential (type (-->), type (--<), (&))+import Pandora.Pattern.Operation.Product ((:*:) ((:*:)))+import Pandora.Pattern.Operation.Sum ((:+:) (Option, Adoption)) import Pandora.Paradigm.Primary.Functor.Proxy (Proxy (Proxy)) -infixl 1 <-*------, <-||-----, >-||------infixl 2 <-*-----, <-||----, >-||-----infixl 3 <-*----, <-||---, >-||----infixl 4 <-*---, <-*-*-, <-||--, >-||---infixl 5 <-*--, <-||-, >-||-+infixl 1 <-*------, <<-|-----, <<-|-|---, >-||-----+infixl 2 <-*-----, <<-|----, <<-|-|--, >-||----+infixl 3 <-*----, <<-|---, <<-|-|-, >-||---+infixl 4 <-*---, <-*-*-, <<-|--, >-||--+infixl 5 <-*--, <<-|-, >-||- infixl 6 <-*-, <-+- -infixr 1 --------*-infixr 2 -------*-infixr 3 ------*-infixr 4 -----*-infixr 5 ----*, -*-*--infixr 6 ---*-infixr 7 --*+infixr 1 --------*, --------++infixr 2 -------*, -------++infixr 3 ------*, ------++infixr 4 -----*, -----++infixr 5 ----*, ----+, -*-*-+infixr 6 ---*, ---++infixr 7 --*, --+ infixr 8 -*, -+  infixl 6 <-|-<-|-, <-|->-|-, >-|-<-|-, >-|->-|- -type instance Unit (:*:) = One-type instance Unit (:+:) = Zero- type Applicative t = (Covariant (->) (->) t, Semimonoidal (-->) (:*:) (:*:) t, Monoidal (-->) (-->) (:*:) (:*:) t) type Alternative t = (Covariant (->) (->) t, Semimonoidal (-->) (:*:) (:+:) t, Monoidal (-->) (-->) (:*:) (:+:) t)-type Divisible t = (Covariant (->) (->) t, Semimonoidal (<--) (:*:) (:*:) t, Monoidal (-->) (<--) (:*:) (:*:) t)-type Decidable t = (Covariant (->) (->) t, Semimonoidal (<--) (:*:) (:+:) t, Monoidal (-->) (<--) (:*:) (:+:) t)+type Divisible t = (Covariant (->) (->) t, Semimonoidal (--<) (:*:) (:*:) t, Monoidal (-->) (--<) (:*:) (:*:) t)+type Decidable t = (Covariant (->) (->) t, Semimonoidal (--<) (:*:) (:+:) t, Monoidal (-->) (--<) (:*:) (:+:) t)  instance Adjoint (->) (->) ((:*:) s) ((->) s) where 	(-|) :: ((s :*: a) -> b) -> a -> (s -> b)@@ -94,15 +92,18 @@ x --+ y = (\r -> case r of Option rx -> rx; Adoption ry -> ry) <-|--- mult @(-->) <~~~ x :*: y x -+ y = (\r -> case r of Option rx -> rx; Adoption ry -> ry) <-|--- mult @(-->) <~~~ x :*: y -loop :: (Covariant (->) (->) t, Semimonoidal (-->) (:*:) (:*:) t) => t a -> t b-loop x = let r = x -* r in r+loop :: (Covariant (->) (->) t, Semimonoidal (-->) (:*:) (:*:) t) => t a -> t a+loop x = x -* loop x -type Extractable t = Monoidal (<--) (-->) (:*:) (:*:) t+until :: (Covariant (->) (->) t, Semimonoidal (-->) (:*:) (:+:) t, Monoidal (-->) (-->) (:*:) (:*:) t, Monoidal (-->) (-->) (:*:) (:+:) t) => t a -> t ()+until x = x -* until x --+ pass++type Extractable t = Monoidal (--<) (-->) (:*:) (:*:) t type Pointable t = Monoidal (-->) (-->) (:*:) (:*:) t type Emptiable t = Monoidal (-->) (-->) (:*:) (:+:) t  extract :: Extractable t => t a -> a-extract j = unit @(<--) @(-->) Proxy <~ j <~ One+extract j = unit @(--<) @(-->) Proxy <~ j <~ One  point :: Pointable t => a -> t a point x = unit @(-->) Proxy <~~~ Straight <-- \One -> x@@ -113,38 +114,34 @@ empty :: Emptiable t => t a empty = unit @(-->) Proxy <~ Straight absurd --- TODO: Rename <-||- to <<-|--(<-||-), (<-||--), (<-||---), (<-||----), (<-||-----), (<-||------), (<-||-------), (<-||--------)+-- TODO: define priority, remove those operators that are longer than 9 symbols+(<<-|-), (<<-|--), (<<-|---), (<<-|----), (<<-|-----) 	:: forall (m :: * -> * -> *) (p :: * -> * -> *) a b c . 	(Covariant m m (Flip p c), Interpreted m (Flip p c)) => m a b -> m (p a c) (p b c)-(<-||--------) f = (-#=) @m @(Flip p c) ((<-|-) f)-(<-||-------) f = (-#=) @m @(Flip p c) ((<-|-) f)-(<-||------) f = (-#=) @m @(Flip p c) ((<-|-) f)-(<-||-----) f = (-#=) @m @(Flip p c) ((<-|-) f)-(<-||----) f = (-#=) @m @(Flip p c) ((<-|-) f)-(<-||---) f = (-#=) @m @(Flip p c) ((<-|-) f)-(<-||--) f = (-#=) @m @(Flip p c) ((<-|-) f)-(<-||-) f = (-#=) @m @(Flip p c) ((<-|-) f)+(<<-|-----) f = (-#=) @m @(Flip p c) ((<-|-) f)+(<<-|----) f = (-#=) @m @(Flip p c) ((<-|-) f)+(<<-|---) f = (-#=) @m @(Flip p c) ((<-|-) f)+(<<-|--) f = (-#=) @m @(Flip p c) ((<-|-) f)+(<<-|-) f = (-#=) @m @(Flip p c) ((<-|-) f) +(<<-|-|-), (<<-|-|--), (<<-|-|---) :: forall (m :: * -> * -> *) (p :: * -> * -> *) (t :: * -> *) a b c .+	(Covariant m m (Flip p c), Covariant m (Betwixt m m) t, Covariant m (Betwixt m m) (Flip p c), Covariant (Betwixt m m) m (Flip p c), Interpreted m (Flip p c)) => m a b -> m (p (t a) c) (p (t b) c)+(<<-|-|---) f = (-#=) @m @(Flip p c) ((<-|-|-) f)+(<<-|-|--) f = (-#=) @m @(Flip p c) ((<-|-|-) f)+(<<-|-|-) f = (-#=) @m @(Flip p c) ((<-|-|-) f)+ -- TODO: Rename <-|||- to <<<-|--(<-|||-), (<-|||--), (<-|||---), (<-|||----), (<-|||-----), (<-|||------), (<-|||-------), (<-|||--------)+(<-|||-), (<-|||--), (<-|||---), (<-|||----) 	:: forall (m :: * -> * -> *) (v :: * -> * -> * -> *) a b c d . 	(Covariant m m (Trip v d c), Interpreted m (Trip v d c)) => m a b -> m (v a c d) (v b c d)-(<-|||--------) f = (-#=) @m @(Trip v d c) ((<-|-) f)-(<-|||-------) f = (-#=) @m @(Trip v d c) ((<-|-) f)-(<-|||------) f = (-#=) @m @(Trip v d c) ((<-|-) f)-(<-|||-----) f = (-#=) @m @(Trip v d c) ((<-|-) f) (<-|||----) f = (-#=) @m @(Trip v d c) ((<-|-) f) (<-|||---) f = (-#=) @m @(Trip v d c) ((<-|-) f) (<-|||--) f = (-#=) @m @(Trip v d c) ((<-|-) f) (<-|||-) f = (-#=) @m @(Trip v d c) ((<-|-) f) -(>-||-), (>-||--), (>-||---), (>-||----), (>-||-----), (>-||------), (>-||-------), (>-||--------)+(>-||-), (>-||--), (>-||---), (>-||----), (>-||-----) 	:: forall (m :: * -> * -> *) (p :: * -> * -> *) a b c . 	(Contravariant m m (Flip p c), Interpreted m (Flip p c)) => m a b -> m (p b c) (p a c)-(>-||--------) f = (-#=) @m @(Flip p c) ((>-|-) f)-(>-||-------) f = (-#=) @m @(Flip p c) ((>-|-) f)-(>-||------) f = (-#=) @m @(Flip p c) ((>-|-) f) (>-||-----) f = (-#=) @m @(Flip p c) ((>-|-) f) (>-||----) f = (-#=) @m @(Flip p c) ((>-|-) f) (>-||---) f = (-#=) @m @(Flip p c) ((>-|-) f)
− Pandora/Paradigm/Algebraic/One.hs
@@ -1,3 +0,0 @@-module Pandora.Paradigm.Algebraic.One where--data One = One
− Pandora/Paradigm/Algebraic/Product.hs
@@ -1,75 +0,0 @@-module Pandora.Paradigm.Algebraic.Product where--import Pandora.Core.Functor (type (>>>>>>))-import Pandora.Pattern.Category ((<---))-import Pandora.Pattern.Functor.Covariant (Covariant ((<-|-)))-import Pandora.Pattern.Functor.Extendable (Extendable ((<<=)))-import Pandora.Pattern.Object.Setoid (Setoid ((==)))-import Pandora.Pattern.Object.Semigroup (Semigroup ((+)))-import Pandora.Pattern.Object.Monoid (Monoid (zero))-import Pandora.Pattern.Object.Ringoid (Ringoid ((*)))-import Pandora.Pattern.Object.Quasiring (Quasiring (one))-import Pandora.Pattern.Object.Semilattice (Infimum ((/\)), Supremum ((\/)))-import Pandora.Pattern.Object.Lattice (Lattice)-import Pandora.Pattern.Object.Group (Group (invert))-import Pandora.Pattern.Morphism.Flip (Flip (Flip))-import Pandora.Paradigm.Schemes.T_U (T_U (T_U), type (<:.:>), type (>:.:>), type (<:.:<), type (>:.:<))--infixr 7 :*:-infixr 5 <:*:>---- TODO Define :*:*:, :*:*:*:, ...--data (:*:) s a = s :*: a--instance Covariant (->) (->) ((:*:) s) where-	f <-|- ~(s :*: x) = s :*: f x--instance Covariant (->) (->) (Flip (:*:) a) where-	f <-|- Flip (x :*: y) = Flip (f x :*: y)--instance Extendable (->) ((:*:) s) where-	f <<= ~(s :*: x) = s :*: f (s :*: x)--instance (Setoid s, Setoid a) => Setoid (s :*: a) where-	~(sx :*: x) == ~(sy :*: y) = (sx == sy) * (x == y)--instance (Semigroup s, Semigroup a) => Semigroup (s :*: a) where-	~(sx :*: x) + ~(sy :*: y) = (sx + sy) :*: (x + y)--instance (Monoid s, Monoid a) => Monoid (s :*: a) where-	zero = zero :*: zero--instance (Ringoid s, Ringoid a) => Ringoid (s :*: a) where-	~(sx :*: x) * ~(sy :*: y) = (sx * sy) :*: (x * y)--instance (Quasiring s, Quasiring a) => Quasiring (s :*: a) where-	one = one :*: one--instance (Infimum s, Infimum a) => Infimum (s :*: a) where-	~(sx :*: x) /\ ~(sy :*: y) = sx /\ sy :*: x /\ y--instance (Supremum s, Supremum a) => Supremum (s :*: a) where-	~(sx :*: x) \/ ~(sy :*: y) = sx \/ sy :*: x \/ y--instance (Lattice s, Lattice a) => Lattice (s :*: a) where--instance (Group s, Group a) => Group (s :*: a) where-	invert ~(s :*: x) = invert s :*: invert x--delta :: a -> a :*: a-delta x = x :*: x--swap :: a :*: b -> b :*: a-swap ~(x :*: y) = y :*: x--attached :: a :*: b -> a-attached ~(x :*: _) = x--type (<:*:>) t u = t <:.:> u >>>>>> (:*:)-type (>:*:>) t u = t >:.:> u >>>>>> (:*:)-type (<:*:<) t u = t <:.:< u >>>>>> (:*:)-type (>:*:<) t u = t >:.:< u >>>>>> (:*:)--(<:*:>) :: t a -> u a -> t <:*:> u >>>>>> a-(<:*:>) xs ys = T_U <--- xs :*: ys
− Pandora/Paradigm/Algebraic/Sum.hs
@@ -1,35 +0,0 @@-module Pandora.Paradigm.Algebraic.Sum where--import Pandora.Core.Functor (type (>>>>>>))-import Pandora.Pattern.Semigroupoid ((.))-import Pandora.Pattern.Category ((<--))-import Pandora.Pattern.Functor.Covariant (Covariant ((<-|-)))-import Pandora.Paradigm.Algebraic.Exponential ()-import Pandora.Pattern.Morphism.Flip (Flip (Flip))-import Pandora.Paradigm.Schemes.T_U (type (<:.:>), type (>:.:>), type (<:.:<), type (>:.:<))--infixr 7 :+:--data (:+:) o a = Option o | Adoption a--instance Covariant (->) (->) ((:+:) o) where-	_ <-|- Option s = Option s-	f <-|- Adoption x = Adoption <-- f x--instance Covariant (->) (->) (Flip (:+:) a) where-	_ <-|- Flip (Adoption x) = Flip . Adoption <-- x-	f <-|- Flip (Option y) = Flip . Option <-- f y--sum :: (e -> r) -> (a -> r) -> e :+: a -> r-sum f _ (Option x) = f x-sum _ s (Adoption x) = s x---- TODO: keep it until we realize how to implement n-ary functors-bitraverse_sum :: Covariant (->) (->) t => (e -> t e') -> (a -> t a') -> (e :+: a) -> t (e' :+: a')-bitraverse_sum f _ (Option x) = Option <-|- f x-bitraverse_sum _ g (Adoption x) = Adoption <-|- g x--type (<:+:>) t u = t <:.:> u >>>>>> (:+:)-type (>:+:>) t u = t >:.:> u >>>>>> (:+:)-type (<:+:<) t u = t <:.:< u >>>>>> (:+:)-type (>:+:<) t u = t >:.:< u >>>>>> (:+:)
− Pandora/Paradigm/Algebraic/Zero.hs
@@ -1,8 +0,0 @@-{-# LANGUAGE EmptyCase #-}--module Pandora.Paradigm.Algebraic.Zero where--data Zero--absurd :: Zero -> a-absurd x = case x of {}
Pandora/Paradigm/Controlflow/Effect/Adaptable.hs view
@@ -6,9 +6,9 @@ import Pandora.Pattern.Category (Category (identity)) import Pandora.Pattern.Functor.Covariant (Covariant) import Pandora.Pattern.Functor.Monoidal (Monoidal)-import Pandora.Pattern.Transformer (Liftable (lift))-import Pandora.Paradigm.Algebraic.Exponential (type (-->))-import Pandora.Paradigm.Algebraic.Product ((:*:))+import Pandora.Pattern.Transformation (Liftable (lift))+import Pandora.Pattern.Operation.Exponential (type (-->))+import Pandora.Pattern.Operation.Product ((:*:)) import Pandora.Paradigm.Algebraic (Pointable, extract, point) import Pandora.Paradigm.Primary.Functor.Exactly (Exactly) import Pandora.Paradigm.Controlflow.Effect.Transformer (Monadic, wrap, (:>))
Pandora/Paradigm/Controlflow/Effect/Transformer/Comonadic.hs view
@@ -14,11 +14,11 @@ import Pandora.Pattern.Functor.Bindable (Bindable ((=<<), (==<<))) import Pandora.Pattern.Functor.Extendable (Extendable ((<<=), (<<==))) import Pandora.Pattern.Functor.Comonad (Comonad)-import Pandora.Pattern.Transformer.Lowerable (Lowerable (lower))-import Pandora.Pattern.Transformer.Hoistable (Hoistable ((/|\)))-import Pandora.Paradigm.Algebraic.Exponential (type (-->))-import Pandora.Paradigm.Algebraic.Product ((:*:)((:*:)))-import Pandora.Paradigm.Algebraic.One (One (One))+import Pandora.Pattern.Transformation.Lowerable (Lowerable (lower))+import Pandora.Pattern.Transformation.Hoistable (Hoistable ((/|\)))+import Pandora.Pattern.Operation.Exponential (type (-->))+import Pandora.Pattern.Operation.Product ((:*:)((:*:)))+import Pandora.Pattern.Operation.One (One (One)) import Pandora.Paradigm.Algebraic (Extractable, point) import Pandora.Paradigm.Schemes (Schematic) 
Pandora/Paradigm/Controlflow/Effect/Transformer/Monadic.hs view
@@ -14,13 +14,13 @@ import Pandora.Pattern.Functor.Bindable (Bindable ((=<<))) import Pandora.Pattern.Functor.Extendable (Extendable ((<<=))) import Pandora.Pattern.Functor.Monad (Monad)-import Pandora.Pattern.Transformer.Liftable (Liftable (lift))-import Pandora.Pattern.Transformer.Hoistable (Hoistable ((/|\)))-import Pandora.Paradigm.Algebraic.Exponential (type (-->))-import Pandora.Paradigm.Algebraic.Product ((:*:)((:*:)))-import Pandora.Paradigm.Algebraic.Sum ((:+:))-import Pandora.Paradigm.Algebraic.One (One (One))-import Pandora.Paradigm.Algebraic (Pointable, point)+import Pandora.Pattern.Transformation.Liftable (Liftable (lift))+import Pandora.Pattern.Transformation.Hoistable (Hoistable ((/|\)))+import Pandora.Pattern.Operation.Exponential (type (-->))+import Pandora.Pattern.Operation.Product ((:*:)((:*:)))+import Pandora.Pattern.Operation.Sum ((:+:))+import Pandora.Pattern.Operation.One (One (One))+import Pandora.Paradigm.Algebraic (Pointable, point, empty) import Pandora.Paradigm.Schemes (Schematic)  class Interpreted m t => Monadic m t where@@ -45,6 +45,9 @@ 	mult = Straight <-- \(TM f :*: TM x) -> TM 		<---- mult @(-->) @(:*:) @(:+:) 			<~~~ f :*: x++instance Monoidal (-->) (-->) (:*:) (:+:) (Schematic Monad t u) => Monoidal (-->) (-->) (:*:) (:+:) (t :> u) where+	unit _ = Straight <-- \_ -> TM empty  instance Traversable (->) (->) (Schematic Monad t u) => Traversable (->) (->) (t :> u) where 	f <-/- TM x = TM <-|-- f <-/- x
Pandora/Paradigm/Controlflow/Pipeline.hs view
@@ -6,8 +6,8 @@ import Pandora.Pattern.Kernel (constant) import Pandora.Pattern.Functor.Bindable (Bindable ((=<<))) import Pandora.Pattern.Functor.Monoidal (Monoidal)-import Pandora.Paradigm.Algebraic.Exponential (type (-->))-import Pandora.Paradigm.Algebraic.Product ((:*:))+import Pandora.Pattern.Operation.Exponential (type (-->))+import Pandora.Pattern.Operation.Product ((:*:)) import Pandora.Paradigm.Algebraic (point) import Pandora.Paradigm.Primary.Transformer.Continuation (Continuation (Continuation)) 
Pandora/Paradigm/Inventory.hs view
@@ -1,6 +1,6 @@ {-# LANGUAGE AllowAmbiguousTypes #-} {-# OPTIONS_GHC -fno-warn-orphans #-}-module Pandora.Paradigm.Inventory (module Exports, zoom, overlook, probably, (=<>), (~<>)) where+module Pandora.Paradigm.Inventory (module Exports, zoom, magnify, overlook, probably, definitely, (=<>), (~<>)) where  import Pandora.Paradigm.Inventory.Ability as Exports import Pandora.Paradigm.Inventory.Some as Exports@@ -8,16 +8,16 @@ import Pandora.Core.Functor (type (>>>)) import Pandora.Core.Interpreted (run, (<~)) import Pandora.Pattern.Semigroupoid ((.))-import Pandora.Pattern.Category ((<--), (<---), (<----))+import Pandora.Pattern.Category ((<--), (<---)) import Pandora.Pattern.Kernel (constant)-import Pandora.Pattern.Morphism.Flip (Flip (Flip)) import Pandora.Pattern.Functor.Covariant (Covariant ((<-|-))) import Pandora.Pattern.Functor.Semimonoidal (Semimonoidal (mult))-import Pandora.Pattern.Functor.Adjoint (Adjoint ((-|), (--|), (|-), (|--)))+import Pandora.Pattern.Functor.Adjoint (Adjoint ((-|), (--|), (|-), (|--), (|---))) import Pandora.Paradigm.Primary.Functor.Maybe (Maybe (Just, Nothing))-import Pandora.Paradigm.Algebraic.Product ((:*:) ((:*:)))-import Pandora.Paradigm.Algebraic.Exponential ((%), type (<--))-import Pandora.Paradigm.Algebraic (Pointable, extract)+import Pandora.Paradigm.Primary.Functor.Exactly (Exactly)+import Pandora.Pattern.Operation.Product ((:*:) ((:*:)))+import Pandora.Pattern.Operation.Exponential ((%), type (--<))+import Pandora.Paradigm.Algebraic.Functor (Pointable, extract, (<<-|-)) import Pandora.Paradigm.Controlflow.Effect.Transformer ((:>) (TM)) import Pandora.Paradigm.Controlflow.Effect.Adaptable (Adaptable (adapt)) import Pandora.Paradigm.Schemes.TUT (TUT (TUT))@@ -37,20 +37,31 @@ 	g |- x = run . g |-- run x  zoom :: forall bg ls u result . Lens u bg ls -> State (u ls) result -> State bg result-zoom lens less = State <-- \source -> restruct |- run (lens <~ source) where+zoom lens less = State <-- \source -> restruct |--- run <-- lens <~ source where  	restruct :: (u ls -> bg) -> u ls -> bg :*: result-	restruct to target = run @(->) <---- to <-|- Flip <-- less <~ target+	restruct to target = to <<-|- less <~ target -overlook :: (Covariant (->) (->) t, Semimonoidal (<--) (:*:) (:*:) t) => State s result -> State (t s) (t result)-overlook (State state) = State <-- \ts -> mult @(<--) @(:*:) @(:*:) <~ (state <-|- ts)+-- TODO: Could we make it fully Stateful?+magnify :: forall bg ls t u result . Covariant (->) (->) t+	=> Lens u bg ls -> State (u ls) :> t >>> result -> State bg :> t >>> result +magnify lens less = TM . TUT <-- \source -> restruct |--- run <-- lens <~ source where +	restruct :: (u ls -> bg) -> u ls -> t (bg :*: result)+	restruct to target = (to <<-|-) <-|- less <~ target++overlook :: (Covariant (->) (->) t, Semimonoidal (--<) (:*:) (:*:) t) => State s result -> State (t s) (t result)+overlook (State state) = State <-- \ts -> mult @(--<) @(:*:) @(:*:) <~ (state <-|- ts)+ -- TODO: it's better to rename it to `perhaps` but this name is already taken -- `Perhaps` and `Accessibe` typeclasses should be generalized to only one probably :: State s :> Maybe >>> result -> State s (Maybe result) probably (TM (TUT state)) = State <-- \old -> case state old of 	Just (new :*: r) -> new :*: Just r 	Nothing -> old :*: Nothing++definitely :: State s :> Exactly >>> result -> State s result+definitely (TM (TUT state)) = State <-- extract . state  (=<>) :: (Pointable available, Stateful src t) 	=> Lens available src tgt -> tgt -> t src
Pandora/Paradigm/Inventory/Some/Accumulator.hs view
@@ -11,8 +11,8 @@ import Pandora.Pattern.Functor.Monad (Monad) import Pandora.Pattern.Object.Monoid (Monoid) import Pandora.Pattern.Object.Semigroup (Semigroup ((+)))-import Pandora.Paradigm.Algebraic.Exponential (type (-->))-import Pandora.Paradigm.Algebraic.Product ((:*:) ((:*:)))+import Pandora.Pattern.Operation.Exponential (type (-->))+import Pandora.Pattern.Operation.Product ((:*:) ((:*:))) import Pandora.Paradigm.Algebraic (point) import Pandora.Paradigm.Controlflow.Effect.Transformer.Monadic (Monadic (wrap), (:>) (TM)) import Pandora.Paradigm.Controlflow.Effect.Adaptable (Adaptable (adapt))
Pandora/Paradigm/Inventory/Some/Equipment.hs view
@@ -9,7 +9,7 @@ import Pandora.Pattern.Functor.Extendable (Extendable ((<<=))) import Pandora.Pattern.Functor.Comonad (Comonad) import Pandora.Paradigm.Algebraic ()-import Pandora.Paradigm.Algebraic.Product ((:*:) ((:*:)), attached)+import Pandora.Pattern.Operation.Product ((:*:) ((:*:)), attached) import Pandora.Paradigm.Controlflow.Effect.Adaptable (Adaptable (adapt)) import Pandora.Paradigm.Inventory.Ability.Gettable (Gettable (Getting, get)) import Pandora.Paradigm.Schemes (Schematic, TU (TU), type (<:.>))
Pandora/Paradigm/Inventory/Some/Optics.hs view
@@ -12,14 +12,14 @@ import Pandora.Pattern.Functor.Invariant (Invariant ((<!<))) import Pandora.Pattern.Functor.Semimonoidal (Semimonoidal (mult)) import Pandora.Pattern.Functor.Representable (Representable (Representation, (<#>), tabulate))-import Pandora.Pattern.Transformer.Liftable (Liftable (lift))-import Pandora.Pattern.Transformer.Lowerable (Lowerable (lower))+import Pandora.Pattern.Transformation.Liftable (Liftable (lift))+import Pandora.Pattern.Transformation.Lowerable (Lowerable (lower)) import Pandora.Pattern.Object.Setoid (Setoid ((?=))) import Pandora.Paradigm.Inventory.Ability.Gettable (Gettable (Getting, get)) import Pandora.Paradigm.Inventory.Ability.Settable (Settable (Setting, set)) import Pandora.Paradigm.Inventory.Ability.Modifiable (Modifiable (Modification, modify))-import Pandora.Paradigm.Algebraic.Product ((:*:) ((:*:)))-import Pandora.Paradigm.Algebraic.Exponential (type (-->), (%))+import Pandora.Pattern.Operation.Product ((:*:) ((:*:)))+import Pandora.Pattern.Operation.Exponential (type (-->), (%)) import Pandora.Paradigm.Algebraic (Pointable, point, extract, (>-||---)) import Pandora.Paradigm.Primary.Functor.Exactly (Exactly (Exactly)) import Pandora.Paradigm.Primary.Functor.Maybe (Maybe (Just, Nothing))
Pandora/Paradigm/Inventory/Some/Provision.hs view
@@ -11,10 +11,10 @@ import Pandora.Pattern.Functor.Distributive (Distributive ((-<<))) import Pandora.Pattern.Functor.Bindable (Bindable ((=<<))) import Pandora.Pattern.Functor.Monad (Monad)-import Pandora.Paradigm.Algebraic.Exponential (type (-->), (%))-import Pandora.Paradigm.Algebraic ((<-||-))-import Pandora.Paradigm.Algebraic.Product ((:*:))-import Pandora.Paradigm.Algebraic.One (One (One))+import Pandora.Pattern.Operation.Exponential (type (-->), (%))+import Pandora.Paradigm.Algebraic ((<<-|-))+import Pandora.Pattern.Operation.Product ((:*:))+import Pandora.Pattern.Operation.One (One (One)) import Pandora.Paradigm.Algebraic (point) import Pandora.Pattern.Morphism.Flip (Flip (Flip)) import Pandora.Pattern.Morphism.Straight (Straight (Straight))@@ -32,7 +32,7 @@ 	f >-|- Flip (Provision g) = Flip . Provision <-- g . f  instance Semimonoidal (-->) (:*:) (:*:) (Provision e) where-	mult = Straight <-- Provision . (mult @(-->) <~) . (run <-||-) . (run @(->) <-|-)+	mult = Straight <-- Provision . (mult @(-->) <~) . (run <<-|-) . (run @(->) <-|-)  instance Monoidal (-->) (-->) (:*:) (:*:) (Provision e) where 	unit _ = Straight <-- \f -> Provision <-- \_ -> run f One
Pandora/Paradigm/Inventory/Some/State.hs view
@@ -20,10 +20,10 @@ import Pandora.Paradigm.Inventory.Ability.Gettable (Gettable (Getting, get)) import Pandora.Paradigm.Inventory.Ability.Settable (Settable (Setting, set)) import Pandora.Paradigm.Inventory.Ability.Modifiable (Modifiable (Modification, modify))-import Pandora.Paradigm.Algebraic.Exponential (type (-->))+import Pandora.Pattern.Operation.Exponential (type (-->)) import Pandora.Paradigm.Algebraic ((:*:) ((:*:)), delta)-import Pandora.Paradigm.Algebraic.One (One (One))-import Pandora.Paradigm.Algebraic (Pointable, point, (<-||-), (>-||-))+import Pandora.Pattern.Operation.One (One (One))+import Pandora.Paradigm.Algebraic (Pointable, point, (<<-|-), (>-||-)) import Pandora.Paradigm.Schemes (Schematic, TUT (TUT), type (<:<.>:>))  -- | Effectful computation with a variable@@ -47,7 +47,7 @@ instance Monad (->) (State s) where  instance Invariant (Flip State r) where-	f <!< g = (((g >-||-) . ((f <-||-) <-|-) =#-) =#-)+	f <!< g = (((g >-||-) . ((f <<-|-) <-|-) =#-) =#-)  instance Interpreted (->) (State s) where 	type Primary (State s) a = (->) s :. (:*:) s >>> a
Pandora/Paradigm/Inventory/Some/Store.hs view
@@ -13,9 +13,9 @@ import Pandora.Pattern.Functor.Extendable (Extendable ((<<=))) import Pandora.Pattern.Functor.Comonad (Comonad) import Pandora.Pattern.Functor.Adjoint ((-|), (|-))-import Pandora.Paradigm.Algebraic.Exponential (type (<--), type (-->), (%), (.:..))-import Pandora.Paradigm.Algebraic.Product ((:*:) ((:*:)), attached)-import Pandora.Paradigm.Algebraic (extract, (<-||-), (>-||-))+import Pandora.Pattern.Operation.Exponential (type (--<), type (-->), (%), (.:..))+import Pandora.Pattern.Operation.Product ((:*:) ((:*:)), attached)+import Pandora.Paradigm.Algebraic (extract, (<<-|-), (>-||-)) import Pandora.Pattern.Morphism.Flip (Flip (Flip)) import Pandora.Pattern.Morphism.Straight (Straight (Straight)) import Pandora.Paradigm.Controlflow.Effect.Adaptable (Adaptable (adapt))@@ -29,12 +29,12 @@ instance Covariant (->) (->) (Store s) where 	(<-|-) f = (=#-) (f <-|-|-) -instance Semimonoidal (<--) (:*:) (:*:) (Store s) where+instance Semimonoidal (--<) (:*:) (:*:) (Store s) where 	mult = Flip <-- \(Store (s :*: f)) -> 		let (x :*: y) = f s in 		Store (s :*: constant x) :*: Store (s :*: constant y) -instance Monoidal (<--) (-->) (:*:) (:*:) (Store s) where+instance Monoidal (--<) (-->) (:*:) (:*:) (Store s) where 	unit _ = Flip <-- Straight . constant . ((<--) |-) . run  -- TODO: Try to generalize (->) here@@ -44,7 +44,7 @@ instance Comonad (->) (Store s) where  instance Invariant (Flip Store r) where-	f <!< g = (((f <-||-) . ((g >-||-) <-|-) =#-) =#-)+	f <!< g = (((f <<-|-) . ((g >-||-) <-|-) =#-) =#-)  instance Interpreted (->) (Store s) where 	type Primary (Store s) a = (:*:) s :. (->) s >>> a
Pandora/Paradigm/Primary.hs view
@@ -12,10 +12,10 @@ import Pandora.Pattern.Semigroupoid (Semigroupoid ((.))) import Pandora.Pattern.Category ((<---)) import Pandora.Pattern.Functor.Adjoint (Adjoint ((|-), (-|)))-import Pandora.Paradigm.Algebraic.Product ((:*:) ((:*:)))-import Pandora.Paradigm.Algebraic.Sum ((:+:))-import Pandora.Paradigm.Algebraic.One (One)-import Pandora.Paradigm.Algebraic.Zero (Zero)+import Pandora.Pattern.Operation.Product ((:*:) ((:*:)))+import Pandora.Pattern.Operation.Sum ((:+:))+import Pandora.Pattern.Operation.One (One)+import Pandora.Pattern.Operation.Zero (Zero) import Pandora.Paradigm.Schemes (TU, T_U, UT, TUT)  instance Adjoint (->) (->) (Flip (:*:) s) ((->) s) where
Pandora/Paradigm/Primary/Auxiliary.hs view
@@ -2,7 +2,7 @@  import Pandora.Pattern.Category ((<--)) import Pandora.Pattern.Functor.Covariant (Covariant ((<-|-)))-import Pandora.Paradigm.Algebraic.Exponential ()+import Pandora.Pattern.Operation.Exponential ()  data Vertical a = Up a | Down a 
Pandora/Paradigm/Primary/Functor/Conclusion.hs view
@@ -4,6 +4,7 @@ import Pandora.Core.Interpreted (Interpreted (Primary, run, unite, (<~))) import Pandora.Pattern.Semigroupoid ((.)) import Pandora.Pattern.Morphism.Straight (Straight (Straight))+import Pandora.Pattern.Morphism.Kleisli (Kleisli (Kleisli)) import Pandora.Pattern.Category (identity, (<--), (<---), (<----)) import Pandora.Pattern.Functor.Covariant (Covariant ((<-|-))) import Pandora.Pattern.Functor.Semimonoidal (Semimonoidal (mult))@@ -11,24 +12,35 @@ import Pandora.Pattern.Functor.Traversable (Traversable ((<-/-))) import Pandora.Pattern.Functor.Bindable (Bindable ((=<<))) import Pandora.Pattern.Functor.Monad (Monad)+import Pandora.Pattern.Functor (Functor ((-|-))) import Pandora.Pattern.Object.Setoid (Setoid ((==))) import Pandora.Pattern.Object.Chain (Chain ((<=>))) import Pandora.Pattern.Object.Semigroup (Semigroup ((+))) import Pandora.Paradigm.Primary.Object.Boolean (Boolean (False)) import Pandora.Paradigm.Primary.Object.Ordering (Ordering (Less, Greater))-import Pandora.Paradigm.Algebraic.Product ((:*:) ((:*:)))-import Pandora.Paradigm.Algebraic.Sum ((:+:) (Option, Adoption))+import Pandora.Pattern.Operation.Product ((:*:) ((:*:)))+import Pandora.Pattern.Operation.Sum ((:+:) (Option, Adoption)) import Pandora.Pattern.Morphism.Flip (Flip (Flip)) import Pandora.Paradigm.Controlflow.Effect.Transformer.Monadic (Monadic (wrap), (:>) (TM)) import Pandora.Paradigm.Controlflow.Effect.Adaptable (Adaptable (adapt))-import Pandora.Paradigm.Algebraic.Exponential (type (-->))-import Pandora.Paradigm.Algebraic.One (One (One))+import Pandora.Pattern.Operation.Exponential (type (-->))+import Pandora.Pattern.Operation.One (One (One)) import Pandora.Paradigm.Algebraic (point) import Pandora.Paradigm.Schemes (Schematic, UT (UT), type (<.:>))  -- TODO: rename it to Progress = Stop e | Continue a -- it would be a more generalized and semantic-based name data Conclusion e a = Failure e | Success a++instance Functor (-->) (-->) (Conclusion e) where+	(-|-) (Straight f) = Straight <-- \case+		Success x -> Success <-- f x+		Failure y -> Failure y++instance Functor (Kleisli (Conclusion e) (->)) (-->) (Conclusion e) where+	(-|-) (Kleisli f) = Straight <-- \case+		Failure e -> Failure e+		Success x -> f x  instance Covariant (->) (->) (Conclusion e) where 	f <-|- Success x = Success <-- f x
Pandora/Paradigm/Primary/Functor/Constant.hs view
@@ -14,7 +14,7 @@ import Pandora.Pattern.Object.Semilattice (Infimum ((/\)), Supremum ((\/))) import Pandora.Pattern.Object.Lattice (Lattice) import Pandora.Pattern.Object.Group (Group (invert))-import Pandora.Paradigm.Algebraic.Exponential ()+import Pandora.Pattern.Operation.Exponential () import Pandora.Pattern.Morphism.Flip (Flip (Flip))  newtype Constant a b = Constant a
Pandora/Paradigm/Primary/Functor/Convergence.hs view
@@ -2,22 +2,28 @@  import Pandora.Pattern.Category ((<--)) import Pandora.Pattern.Morphism.Straight (Straight (Straight))+import Pandora.Pattern.Morphism.Flip (Flip (Flip)) import Pandora.Pattern.Functor.Contravariant (Contravariant ((>-|-))) import Pandora.Pattern.Functor.Semimonoidal (Semimonoidal (mult)) import Pandora.Pattern.Functor.Monoidal (Monoidal (unit))+import Pandora.Pattern.Functor (Functor ((-|-))) import Pandora.Pattern.Object.Semigroup (Semigroup ((+))) import Pandora.Pattern.Object.Monoid (Monoid (zero))-import Pandora.Paradigm.Algebraic.Exponential (type (-->), type (<--))-import Pandora.Paradigm.Algebraic.Product ((:*:)((:*:)))+import Pandora.Pattern.Operation.Exponential (type (-->), type (--<))+import Pandora.Pattern.Operation.Product ((:*:)((:*:))) import Pandora.Paradigm.Algebraic ()  data Convergence r a = Convergence (a -> a -> r) +instance Functor (-->) (--<) (Convergence r) where+	(-|-) (Straight f) = Flip <-- \case+		Convergence g -> Convergence <-- \x y -> g <-- f x <-- f y+ instance Contravariant (->) (->) (Convergence r) where 	f >-|- Convergence g = Convergence <-- \x y -> g <-- f x <-- f y  instance Semigroup r => Semimonoidal (-->) (:*:) (:*:) (Convergence r) where 	mult = Straight <-- \(Convergence f :*: Convergence g) -> Convergence <-- \(a :*: b) (a' :*: b') -> f a a' + g b b' -instance Monoid r => Monoidal (-->) (<--) (:*:) (:*:) (Convergence r) where+instance Monoid r => Monoidal (-->) (--<) (:*:) (:*:) (Convergence r) where 	unit _ = Straight <-- \_ -> Convergence <-- \_ _ -> zero
Pandora/Paradigm/Primary/Functor/Edges.hs view
@@ -3,7 +3,7 @@ import Pandora.Pattern.Category ((<--)) import Pandora.Pattern.Functor.Covariant (Covariant ((<-|-))) import Pandora.Pattern.Functor.Traversable (Traversable ((<-/-)))-import Pandora.Paradigm.Algebraic.Exponential ()+import Pandora.Pattern.Operation.Exponential () import Pandora.Paradigm.Algebraic (point)  data Edges a = Empty | Leap a | Connect a | Overlay a
Pandora/Paradigm/Primary/Functor/Endo.hs view
@@ -6,8 +6,8 @@ import Pandora.Pattern.Functor.Invariant (Invariant ((<!<))) import Pandora.Pattern.Object.Semigroup (Semigroup ((+))) import Pandora.Pattern.Object.Monoid (Monoid (zero))-import Pandora.Paradigm.Algebraic.Exponential ()-import Pandora.Paradigm.Algebraic.Product ((:*:) ((:*:)))+import Pandora.Pattern.Operation.Exponential ()+import Pandora.Pattern.Operation.Product ((:*:) ((:*:))) import Pandora.Paradigm.Algebraic ((>-|-<-|-))  newtype Endo a = Endo { endo :: a -> a }
Pandora/Paradigm/Primary/Functor/Exactly.hs view
@@ -1,10 +1,12 @@ module Pandora.Paradigm.Primary.Functor.Exactly where  import Pandora.Core.Interpreted ((<~))-import Pandora.Pattern.Semigroupoid ((.))+import Pandora.Pattern.Semigroupoid (Semigroupoid ((.))) import Pandora.Pattern.Category ((<--), (<---), (<----)) import Pandora.Pattern.Morphism.Flip (Flip (Flip)) import Pandora.Pattern.Morphism.Straight (Straight (Straight))+import Pandora.Pattern.Morphism.Kleisli (Kleisli (Kleisli))+import Pandora.Pattern.Morphism.Tensor (Tensor (Tensor)) import Pandora.Pattern.Functor.Covariant (Covariant ((<-|-))) import Pandora.Pattern.Functor.Traversable (Traversable ((<-/-))) import Pandora.Pattern.Functor.Semimonoidal (Semimonoidal (mult))@@ -15,6 +17,8 @@ import Pandora.Pattern.Functor.Monad (Monad) import Pandora.Pattern.Functor.Comonad (Comonad) import Pandora.Pattern.Functor.Adjoint (Adjoint ((-|), (|-)))+import Pandora.Pattern.Functor (Functor ((-|-)))+import Pandora.Pattern.Transformation (Component (component)) import Pandora.Pattern.Object.Setoid (Setoid ((==))) import Pandora.Pattern.Object.Chain (Chain ((<=>))) import Pandora.Pattern.Object.Semigroup (Semigroup ((+)))@@ -24,26 +28,40 @@ import Pandora.Pattern.Object.Semilattice (Infimum ((/\)), Supremum ((\/))) import Pandora.Pattern.Object.Lattice (Lattice) import Pandora.Pattern.Object.Group (Group (invert))-import Pandora.Paradigm.Algebraic.Exponential (type (<--), type (-->))-import Pandora.Paradigm.Algebraic.Product ((:*:) ((:*:)))-import Pandora.Paradigm.Algebraic.One (One (One))-import Pandora.Paradigm.Algebraic (extract, (<-||-))+import Pandora.Pattern.Operation.Exponential (type (--<), type (-->))+import Pandora.Pattern.Operation.Product ((:*:) ((:*:)))+import Pandora.Pattern.Operation.One (One (One))+import Pandora.Paradigm.Algebraic (extract, (<<-|-))  newtype Exactly a = Exactly a +instance Functor (-->) (-->) Exactly where+	(-|-) (Straight f) = Straight <-- \case+		Exactly x -> Exactly <-- f x++instance Functor (Kleisli Exactly (->)) (-->) Exactly where+	(-|-) (Kleisli f) = Straight <-- \case+		Exactly x -> f x++instance Component (Tensor (:*:) (-->) (:*:)) Exactly Exactly where+	component = Tensor . Straight <-- \(Exactly l :*: Exactly r) -> Exactly (l :*: r)++instance Component (Tensor (:*:) (--<) (:*:)) Exactly Exactly where+	component = Tensor . Flip <-- \(Exactly (l :*: r)) -> Exactly l :*: Exactly r+ instance Covariant (->) (->) Exactly where 	f <-|- Exactly x = Exactly <-- f x  instance Semimonoidal (-->) (:*:) (:*:) Exactly where-	mult = Straight <-- Exactly . (extract <-||-) .  (extract <-|-)+	mult = Straight <-- Exactly . (extract <<-|-) .  (extract <-|-)  instance Monoidal (-->) (-->) (:*:) (:*:) Exactly where 	unit _ = Straight <-- Exactly . (<~ One) -instance Semimonoidal (<--) (:*:) (:*:) Exactly where+instance Semimonoidal (--<) (:*:) (:*:) Exactly where 	mult = Flip <-- \(Exactly (x :*: y)) -> Exactly x :*: Exactly y -instance Monoidal (<--) (-->) (:*:) (:*:) Exactly where+instance Monoidal (--<) (-->) (:*:) (:*:) Exactly where 	unit _ = Flip <-- \(Exactly x) -> Straight (\_ -> x)  instance Traversable (->) (->) Exactly where
Pandora/Paradigm/Primary/Functor/Fix.hs view
@@ -3,7 +3,7 @@ import Pandora.Core.Functor (type (<:=), type (:=>)) import Pandora.Pattern.Semigroupoid ((.)) import Pandora.Pattern.Functor.Covariant (Covariant ((<-|-)))-import Pandora.Paradigm.Algebraic.Exponential ()+import Pandora.Pattern.Operation.Exponential ()  newtype Fix t = Fix { unfix :: t (Fix t) } 
Pandora/Paradigm/Primary/Functor/Maybe.hs view
@@ -6,12 +6,14 @@ import Pandora.Pattern.Category (identity, (<--), (<---)) import Pandora.Pattern.Morphism.Flip (Flip (Flip)) import Pandora.Pattern.Morphism.Straight (Straight (Straight))+import Pandora.Pattern.Morphism.Kleisli (Kleisli (Kleisli)) import Pandora.Pattern.Functor.Covariant (Covariant ((<-|-))) import Pandora.Pattern.Functor.Semimonoidal (Semimonoidal (mult)) import Pandora.Pattern.Functor.Monoidal (Monoidal (unit)) import Pandora.Pattern.Functor.Traversable (Traversable ((<-/-))) import Pandora.Pattern.Functor.Bindable (Bindable ((=<<))) import Pandora.Pattern.Functor.Monad (Monad)+import Pandora.Pattern.Functor (Functor ((-|-))) import Pandora.Pattern.Object.Setoid (Setoid ((==))) import Pandora.Pattern.Object.Chain (Chain ((<=>))) import Pandora.Pattern.Object.Semigroup (Semigroup ((+)))@@ -23,16 +25,26 @@ import Pandora.Paradigm.Controlflow.Effect.Transformer.Monadic (Monadic (wrap), (:>) (TM)) import Pandora.Paradigm.Controlflow.Effect.Adaptable (Adaptable (adapt)) import Pandora.Paradigm.Structure.Ability.Monotonic (Monotonic (reduce))-import Pandora.Paradigm.Algebraic.Exponential (type (<--), type (-->))-import Pandora.Paradigm.Algebraic.Product ((:*:) ((:*:)))-import Pandora.Paradigm.Algebraic.Sum ((:+:) (Option, Adoption))-import Pandora.Paradigm.Algebraic.One (One (One))+import Pandora.Pattern.Operation.Exponential (type (--<), type (-->))+import Pandora.Pattern.Operation.Product ((:*:) ((:*:)))+import Pandora.Pattern.Operation.Sum ((:+:) (Option, Adoption))+import Pandora.Pattern.Operation.One (One (One)) import Pandora.Paradigm.Algebraic (point) import Pandora.Paradigm.Schemes (Schematic, UT (UT), type (<.:>))  -- TODO: better to rename it to Option a = Some a | None? data Maybe a = Nothing | Just a +instance Functor (-->) (-->) Maybe where+	(-|-) (Straight f) = Straight <-- \case+		Just x -> Just <-- f x+		Nothing -> Nothing++instance Functor (Kleisli Maybe (->)) (-->) Maybe where+	(-|-) (Kleisli f) = Straight <-- \case+		Just x -> f x+		Nothing -> Nothing+ instance Covariant (->) (->) Maybe where 	f <-|- Just x = Just <-- f x 	_ <-|- Nothing = Nothing@@ -56,7 +68,7 @@ 	unit _ = Straight <-- \_ -> Nothing  -- TODO: Check laws-instance Semimonoidal (<--) (:*:) (:*:) Maybe where+instance Semimonoidal (--<) (:*:) (:*:) Maybe where 	mult = Flip <-- \case 		Just (x :*: y) -> Just x :*: Just y 		Nothing -> Nothing :*: Nothing
Pandora/Paradigm/Primary/Functor/Predicate.hs view
@@ -5,18 +5,24 @@ import Pandora.Pattern.Semigroupoid ((.)) import Pandora.Pattern.Category ((<--)) import Pandora.Pattern.Morphism.Straight (Straight (Straight))+import Pandora.Pattern.Morphism.Flip (Flip (Flip)) import Pandora.Pattern.Functor.Contravariant (Contravariant ((>-|-))) import Pandora.Pattern.Functor.Semimonoidal (Semimonoidal (mult)) import Pandora.Pattern.Functor.Monoidal (Monoidal (unit))+import Pandora.Pattern.Functor (Functor ((-|-))) import Pandora.Pattern.Object.Setoid (Setoid ((==))) import Pandora.Pattern.Object.Ringoid (Ringoid ((*))) import Pandora.Paradigm.Primary.Object.Boolean (Boolean (True, False), bool)-import Pandora.Paradigm.Algebraic.Product ((:*:)((:*:)))-import Pandora.Paradigm.Algebraic.Sum ((:+:)(Option, Adoption))-import Pandora.Paradigm.Algebraic.Exponential (type (-->), type (<--))+import Pandora.Pattern.Operation.Product ((:*:)((:*:)))+import Pandora.Pattern.Operation.Sum ((:+:)(Option, Adoption))+import Pandora.Pattern.Operation.Exponential (type (-->), type (--<))  newtype Predicate a = Predicate (a -> Boolean) +instance Functor (-->) (--<) Predicate where+	(-|-) (Straight f) = Flip <-- \case+		Predicate g -> Predicate <-- g . f+ instance Interpreted (->) Predicate where 	type Primary Predicate a = a -> Boolean 	run ~(Predicate f) = f@@ -28,7 +34,7 @@ instance Semimonoidal (-->) (:*:) (:*:) Predicate where 	mult = Straight <-- \(Predicate f :*: Predicate g) -> Predicate <-- \(x :*: y) -> f x * g y -instance Monoidal (-->) (<--) (:*:) (:*:) Predicate where+instance Monoidal (-->) (--<) (:*:) (:*:) Predicate where 	unit _ = Straight <-- \_ -> Predicate <-- \_ -> True  instance Semimonoidal (-->) (:*:) (:+:) Predicate where
Pandora/Paradigm/Primary/Functor/Proxy.hs view
@@ -6,7 +6,7 @@ import Pandora.Pattern.Functor.Bindable (Bindable ((=<<))) import Pandora.Pattern.Functor.Extendable (Extendable ((<<=))) --import Pandora.Pattern.Functor.Monad (Monad)-import Pandora.Paradigm.Algebraic.Exponential ()+import Pandora.Pattern.Operation.Exponential ()  data Proxy a = Proxy 
Pandora/Paradigm/Primary/Functor/Tagged.hs view
@@ -6,6 +6,7 @@ import Pandora.Pattern.Category ((<--), (<---), (<----)) import Pandora.Pattern.Morphism.Flip (Flip (Flip)) import Pandora.Pattern.Morphism.Straight (Straight (Straight))+import Pandora.Pattern.Morphism.Kleisli (Kleisli (Kleisli)) import Pandora.Pattern.Functor.Covariant (Covariant ((<-|-))) import Pandora.Pattern.Functor.Semimonoidal (Semimonoidal (mult)) import Pandora.Pattern.Functor.Monoidal (Monoidal (unit))@@ -15,6 +16,7 @@ import Pandora.Pattern.Functor.Extendable (Extendable ((<<=))) import Pandora.Pattern.Functor.Monad (Monad) import Pandora.Pattern.Functor.Comonad (Comonad)+import Pandora.Pattern.Functor (Functor ((-|-))) import Pandora.Pattern.Object.Setoid (Setoid ((==))) import Pandora.Pattern.Object.Chain (Chain ((<=>))) import Pandora.Pattern.Object.Semigroup (Semigroup ((+)))@@ -24,13 +26,21 @@ import Pandora.Pattern.Object.Semilattice (Infimum ((/\)), Supremum ((\/))) import Pandora.Pattern.Object.Lattice (Lattice) import Pandora.Pattern.Object.Group (Group (invert))-import Pandora.Paradigm.Algebraic.Exponential (type (<--), type (-->))-import Pandora.Paradigm.Algebraic.Product ((:*:) ((:*:)))-import Pandora.Paradigm.Algebraic.One (One (One))-import Pandora.Paradigm.Algebraic (extract, (<-||-))+import Pandora.Pattern.Operation.Exponential (type (--<), type (-->))+import Pandora.Pattern.Operation.Product ((:*:) ((:*:)))+import Pandora.Pattern.Operation.One (One (One))+import Pandora.Paradigm.Algebraic (extract, (<<-|-))  newtype Tagged tag a = Tag a +instance Functor (-->) (-->) (Tagged tag) where+	(-|-) (Straight f) = Straight <-- \case+		Tag x -> Tag <-- f x++instance Functor (Kleisli (Tagged tag) (->)) (-->) (Tagged tag) where+	(-|-) (Kleisli f) = Straight <-- \case+		Tag x -> f x+ infixr 0 :# type (:#) tag = Tagged tag @@ -41,15 +51,15 @@ 	_ <-|- Flip (Tag x) = Flip <-- Tag x  instance Semimonoidal (-->) (:*:) (:*:) (Tagged tag) where-	mult = Straight <-- Tag . (extract <-||-) . (extract <-|-)+	mult = Straight <-- Tag . (extract <<-|-) . (extract <-|-)  instance Monoidal (-->) (-->) (:*:) (:*:) (Tagged tag) where 	unit _ = Straight <-- Tag . (<~ One) -instance Semimonoidal (<--) (:*:) (:*:) (Tagged tag) where+instance Semimonoidal (--<) (:*:) (:*:) (Tagged tag) where 	mult = Flip <-- \(Tag (x :*: y)) -> Tag x :*: Tag y -instance Monoidal (<--) (-->) (:*:) (:*:) (Tagged tag) where+instance Monoidal (--<) (-->) (:*:) (:*:) (Tagged tag) where 	unit _ = Flip <-- \(Tag x) -> Straight (\_ -> x)  instance Traversable (->) (->) (Tagged tag) where
Pandora/Paradigm/Primary/Functor/These.hs view
@@ -4,7 +4,7 @@ import Pandora.Pattern.Functor.Covariant (Covariant ((<-|-))) import Pandora.Pattern.Functor.Traversable (Traversable ((<-/-))) import Pandora.Pattern.Object.Semigroup (Semigroup ((+)))-import Pandora.Paradigm.Algebraic.Exponential ()+import Pandora.Pattern.Operation.Exponential () import Pandora.Paradigm.Algebraic (point)  data These e a = This a | That e | These e a
Pandora/Paradigm/Primary/Functor/Validation.hs view
@@ -10,10 +10,10 @@ import Pandora.Pattern.Object.Setoid (Setoid ((==))) import Pandora.Pattern.Object.Chain (Chain ((<=>))) import Pandora.Pattern.Object.Semigroup (Semigroup ((+)))-import Pandora.Paradigm.Algebraic.Exponential (type (-->))-import Pandora.Paradigm.Algebraic.Product ((:*:) ((:*:)))-import Pandora.Paradigm.Algebraic.Sum ((:+:) (Option, Adoption))-import Pandora.Paradigm.Algebraic.One (One (One))+import Pandora.Pattern.Operation.Exponential (type (-->))+import Pandora.Pattern.Operation.Product ((:*:) ((:*:)))+import Pandora.Pattern.Operation.Sum ((:+:) (Option, Adoption))+import Pandora.Pattern.Operation.One (One (One)) import Pandora.Paradigm.Algebraic (point) import Pandora.Pattern.Morphism.Flip (Flip (Flip)) import Pandora.Pattern.Morphism.Straight (Straight (Straight))
Pandora/Paradigm/Primary/Functor/Wedge.hs view
@@ -3,7 +3,7 @@ import Pandora.Pattern.Category ((<--)) import Pandora.Pattern.Functor.Covariant (Covariant ((<-|-))) import Pandora.Pattern.Functor.Traversable (Traversable ((<-/-)))-import Pandora.Paradigm.Algebraic.Exponential ()+import Pandora.Pattern.Operation.Exponential () import Pandora.Paradigm.Algebraic (point)  data Wedge e a = Nowhere | Here e | There a
Pandora/Paradigm/Primary/Functor/Wye.hs view
@@ -3,12 +3,8 @@ import Pandora.Core.Functor (type (~>)) import Pandora.Pattern.Category ((<--)) import Pandora.Pattern.Functor.Covariant (Covariant ((<-|-)))-import Pandora.Pattern.Functor.Semimonoidal (Semimonoidal (mult)) import Pandora.Pattern.Object.Semigroup (Semigroup ((+))) import Pandora.Pattern.Object.Monoid (Monoid (zero))-import Pandora.Paradigm.Algebraic.Exponential (type (<--))--- import Pandora.Paradigm.Algebraic.Product ((:*:) ((:*:)))-import Pandora.Pattern.Morphism.Flip (Flip (Flip)) import Pandora.Paradigm.Structure.Ability.Monotonic (Monotonic (reduce))  data Wye a = End | Left_ a | Right_ a | Both a a
Pandora/Paradigm/Primary/Linear/Vector.hs view
@@ -8,7 +8,7 @@ import Pandora.Pattern.Object.Quasiring (Quasiring (one)) import Pandora.Pattern.Object.Group (Group (invert)) import Pandora.Pattern.Object.Setoid (Setoid ((==)))-import Pandora.Paradigm.Algebraic.Product ((:*:) ((:*:)))+import Pandora.Pattern.Operation.Product ((:*:) ((:*:))) import Pandora.Paradigm.Structure.Ability.Monotonic (Monotonic (reduce))  data Vector r a where
Pandora/Paradigm/Primary/Transformer/Backwards.hs view
@@ -8,14 +8,14 @@ import Pandora.Pattern.Functor.Monoidal (Monoidal (unit)) import Pandora.Pattern.Functor.Traversable (Traversable ((<-/-))) import Pandora.Pattern.Functor.Distributive (Distributive ((-<<), (--<<)))-import Pandora.Pattern.Transformer.Liftable (Liftable (lift))-import Pandora.Pattern.Transformer.Lowerable (Lowerable (lower))-import Pandora.Pattern.Transformer.Hoistable (Hoistable ((/|\)))+import Pandora.Pattern.Transformation.Liftable (Liftable (lift))+import Pandora.Pattern.Transformation.Lowerable (Lowerable (lower))+import Pandora.Pattern.Transformation.Hoistable (Hoistable ((/|\))) import Pandora.Paradigm.Algebraic ((<-*-))-import Pandora.Paradigm.Algebraic.Product ((:*:) ((:*:)))-import Pandora.Paradigm.Algebraic.Exponential (type (<--), type (-->), (%))-import Pandora.Paradigm.Algebraic.One (One (One))-import Pandora.Paradigm.Algebraic (point, extract, (<-||-))+import Pandora.Pattern.Operation.Product ((:*:) ((:*:)))+import Pandora.Pattern.Operation.Exponential (type (--<), type (-->), (%))+import Pandora.Pattern.Operation.One (One (One))+import Pandora.Paradigm.Algebraic (point, extract, (<<-|-)) import Pandora.Pattern.Morphism.Flip (Flip (Flip)) import Pandora.Pattern.Morphism.Straight (Straight (Straight)) import Pandora.Core.Interpreted (Interpreted (Primary, run, unite, (<~)))@@ -32,10 +32,10 @@ instance (Covariant (->) (->) t, Monoidal (-->) (-->) (:*:) (:*:) t) => Monoidal (-->) (-->) (:*:) (:*:) (Backwards t) where 	unit _ = Straight <-- Backwards . point . (<~ One) -instance (Semimonoidal (<--) (:*:) (:*:) t, Covariant (->) (->) t) => Semimonoidal (<--) (:*:) (:*:) (Backwards t) where-	mult = Flip <-- (Backwards <-||-) . (Backwards <-|-) . (mult @(<--) <~) . run+instance (Semimonoidal (--<) (:*:) (:*:) t, Covariant (->) (->) t) => Semimonoidal (--<) (:*:) (:*:) (Backwards t) where+	mult = Flip <-- (Backwards <<-|-) . (Backwards <-|-) . (mult @(--<) <~) . run -instance (Covariant (->) (->) t, Monoidal (<--) (-->) (:*:) (:*:) t) => Monoidal (<--) (-->) (:*:) (:*:) (Backwards t) where+instance (Covariant (->) (->) t, Monoidal (--<) (-->) (:*:) (:*:) t) => Monoidal (--<) (-->) (:*:) (:*:) (Backwards t) where 	unit _ = Flip <-- \(Backwards x) -> Straight (\_ -> extract x)  instance Traversable (->) (->) t => Traversable (->) (->) (Backwards t) where
Pandora/Paradigm/Primary/Transformer/Construction.hs view
@@ -13,18 +13,18 @@ import Pandora.Pattern.Functor.Traversable (Traversable ((<-/-)), (<-/-/-)) import Pandora.Pattern.Functor.Extendable (Extendable ((<<=))) import Pandora.Pattern.Functor.Comonad (Comonad)-import Pandora.Pattern.Transformer.Lowerable (Lowerable (lower))-import Pandora.Pattern.Transformer.Hoistable (Hoistable ((/|\)))+import Pandora.Pattern.Transformation.Lowerable (Lowerable (lower))+import Pandora.Pattern.Transformation.Hoistable (Hoistable ((/|\))) import Pandora.Pattern.Object.Setoid (Setoid ((==))) import Pandora.Pattern.Object.Semigroup (Semigroup ((+))) import Pandora.Pattern.Object.Ringoid ((*)) import Pandora.Pattern.Object.Monoid (Monoid (zero))-import Pandora.Paradigm.Algebraic ((<-*------), extract)-import Pandora.Paradigm.Algebraic.Exponential (type (<--), type (-->))-import Pandora.Paradigm.Algebraic.Product ((:*:) ((:*:)), type (<:*:>), (<:*:>))-import Pandora.Paradigm.Algebraic.Sum ((:+:))-import Pandora.Paradigm.Algebraic.One (One (One))-import Pandora.Paradigm.Algebraic (empty, (<-||-))+import Pandora.Pattern.Operation.Exponential (type (--<), type (-->))+import Pandora.Pattern.Operation.Product ((:*:) ((:*:)))+import Pandora.Pattern.Operation.Sum ((:+:))+import Pandora.Paradigm.Algebraic ((<-*------), extract, type (<:*:>), (<:*:>))+import Pandora.Pattern.Operation.One (One (One))+import Pandora.Paradigm.Algebraic (empty, (<<-|-)) import Pandora.Paradigm.Primary.Functor.Exactly (Exactly (Exactly)) import Pandora.Paradigm.Schemes (TT (TT), T_U (T_U), type (<::>)) @@ -37,11 +37,11 @@ 	mult = Straight <-- \(Construct x xs :*: Construct y ys) -> Construct <----- x :*: y 		<----- (mult @(-->) <~) <-|-- mult @(-->) <~~~ xs :*: ys -instance (Covariant (->) (->) t, Semimonoidal (<--) (:*:) (:*:) t) => Semimonoidal (<--) (:*:) (:*:) (Construction t) where-	mult = Flip <-- \(Construct (x :*: y) xys) -> (Construct x <-||-) . (Construct y <-|-)-		<----- mult @(<--) <~~~~ (mult @(<--) <~) <-|- xys+instance (Covariant (->) (->) t, Semimonoidal (--<) (:*:) (:*:) t) => Semimonoidal (--<) (:*:) (:*:) (Construction t) where+	mult = Flip <-- \(Construct (x :*: y) xys) -> (Construct x <<-|-) . (Construct y <-|-)+		<----- mult @(--<) <~~~~ (mult @(--<) <~) <-|- xys -instance (Covariant (->) (->) t, Semimonoidal (<--) (:*:) (:*:) t) => Monoidal (<--) (-->) (:*:) (:*:) (Construction t) where+instance (Covariant (->) (->) t, Semimonoidal (--<) (:*:) (:*:) t) => Monoidal (--<) (-->) (:*:) (:*:) (Construction t) where 	unit _ = Flip <-- \(Construct x _) -> Straight (\_ -> x)  instance (Covariant (->) (->) t, Semimonoidal (-->) (:*:) (:*:) t, Monoidal (-->) (-->) (:*:) (:+:) t) => Monoidal (-->) (-->) (:*:) (:*:) (Construction t) where@@ -53,21 +53,21 @@ instance Covariant (->) (->) t => Extendable (->) (Construction t) where 	f <<= x = Construct <---- f x <---- (f <<=) <-|- deconstruct x -instance (Covariant (->) (->) t, Semimonoidal (<--) (:*:) (:*:) t) => Comonad (->) (Construction t) where+instance (Covariant (->) (->) t, Semimonoidal (--<) (:*:) (:*:) t) => Comonad (->) (Construction t) where -instance (forall u . Semimonoidal (<--) (:*:) (:*:) u) => Lowerable (->) Construction where+instance (forall u . Semimonoidal (--<) (:*:) (:*:) u) => Lowerable (->) Construction where 	lower x = extract <-|- deconstruct x -instance (forall u . Semimonoidal (<--) (:*:) (:*:) u, forall u . Covariant (->) (->) u) => Hoistable (->) Construction where+instance (forall u . Semimonoidal (--<) (:*:) (:*:) u, forall u . Covariant (->) (->) u) => Hoistable (->) Construction where 	f /|\ x = Construct <---- extract x <---- (/|\) @(->) f <-|- f (deconstruct x) -instance (Setoid a, forall b . Setoid b => Setoid (t b), Covariant (->) (->) t, Semimonoidal (<--) (:*:) (:*:) t) => Setoid (Construction t a) where+instance (Setoid a, forall b . Setoid b => Setoid (t b), Covariant (->) (->) t, Semimonoidal (--<) (:*:) (:*:) t) => Setoid (Construction t a) where 	x == y = (extract x == extract y) * (deconstruct x == deconstruct y) -instance (Semigroup a, forall b . Semigroup b => Semigroup (t b), Covariant (->) (->) t, Semimonoidal (<--) (:*:) (:*:) t) => Semigroup (Construction t a) where+instance (Semigroup a, forall b . Semigroup b => Semigroup (t b), Covariant (->) (->) t, Semimonoidal (--<) (:*:) (:*:) t) => Semigroup (Construction t a) where 	x + y = Construct <-- extract x + extract y <-- deconstruct x + deconstruct y -instance (Monoid a, forall b . Semigroup b => Monoid (t b), Covariant (->) (->) t, Semimonoidal (<--) (:*:) (:*:) t) => Monoid (Construction t a) where+instance (Monoid a, forall b . Semigroup b => Monoid (t b), Covariant (->) (->) t, Semimonoidal (--<) (:*:) (:*:) t) => Monoid (Construction t a) where 	zero = Construct zero zero  instance Interpreted (->) (Construction t) where@@ -88,5 +88,5 @@ constitute :: Covariant (->) (->) t => (a -> t a) -> a -> Construction t a constitute f x = Construct x <---- constitute f <-|- f x -section :: (Comonad (->) t, Monoidal (<--) (-->) (:*:) (:*:) t) => t ~> Construction t+section :: (Comonad (->) t, Monoidal (--<) (-->) (:*:) (:*:) t) => t ~> Construction t section xs = Construct <--- extract xs <--- section <<= xs
Pandora/Paradigm/Primary/Transformer/Continuation.hs view
@@ -8,10 +8,10 @@ import Pandora.Pattern.Functor.Monoidal (Monoidal) import Pandora.Pattern.Functor.Bindable (Bindable ((=<<))) import Pandora.Pattern.Functor.Monad (Monad)-import Pandora.Pattern.Transformer.Liftable (Liftable (lift))+import Pandora.Pattern.Transformation.Liftable (Liftable (lift)) import Pandora.Core.Interpreted (Interpreted (Primary, run, unite, (<~)))-import Pandora.Paradigm.Algebraic.Exponential ((%), type (-->))-import Pandora.Paradigm.Algebraic.Product ((:*:))+import Pandora.Pattern.Operation.Exponential ((%), type (-->))+import Pandora.Pattern.Operation.Product ((:*:)) import Pandora.Paradigm.Algebraic (point)  newtype Continuation r t a = Continuation ((->) ((->) a (t r)) (t r))
Pandora/Paradigm/Primary/Transformer/Day.hs view
@@ -6,8 +6,8 @@ import Pandora.Pattern.Kernel (constant) import Pandora.Pattern.Functor.Covariant (Covariant ((<-|-))) import Pandora.Pattern.Functor.Extendable (Extendable ((<<=)))-import Pandora.Pattern.Transformer.Hoistable (Hoistable ((/|\)))-import Pandora.Paradigm.Algebraic.Exponential ((.:..))+import Pandora.Pattern.Transformation.Hoistable (Hoistable ((/|\)))+import Pandora.Pattern.Operation.Exponential ((.:..))  data Day t u a = forall b c . Day (t b) (u c) (b -> c -> a) 
Pandora/Paradigm/Primary/Transformer/Instruction.hs view
@@ -5,18 +5,18 @@ import Pandora.Pattern.Semigroupoid ((.)) import Pandora.Pattern.Category ((<--), (<---), (<----), (<-----), (<------)) import Pandora.Pattern.Morphism.Straight (Straight (Straight))-import Pandora.Pattern.Functor.Covariant (Covariant ((<-|-), (<-|--), (<-|---), (<-|-|-)))+import Pandora.Pattern.Functor.Covariant (Covariant ((<-|-), (<-|--), (<-|-|-))) import Pandora.Pattern.Functor.Semimonoidal (Semimonoidal (mult)) import Pandora.Pattern.Functor.Monoidal (Monoidal (unit)) import Pandora.Pattern.Functor.Traversable (Traversable ((<-/-)), (<-/-/-)) import Pandora.Pattern.Functor.Bindable (Bindable ((=<<))) import Pandora.Pattern.Functor.Monad (Monad)-import Pandora.Pattern.Transformer.Liftable (Liftable (lift))-import Pandora.Pattern.Transformer.Lowerable (Lowerable (lower))-import Pandora.Pattern.Transformer.Hoistable (Hoistable ((/|\)))-import Pandora.Paradigm.Algebraic.Exponential (type (-->))-import Pandora.Paradigm.Algebraic.Product ((:*:)((:*:)))-import Pandora.Paradigm.Algebraic.One (One (One))+import Pandora.Pattern.Transformation.Liftable (Liftable (lift))+import Pandora.Pattern.Transformation.Lowerable (Lowerable (lower))+import Pandora.Pattern.Transformation.Hoistable (Hoistable ((/|\)))+import Pandora.Pattern.Operation.Exponential (type (-->))+import Pandora.Pattern.Operation.Product ((:*:)((:*:)))+import Pandora.Pattern.Operation.One (One (One)) import Pandora.Paradigm.Algebraic (point) import Pandora.Core.Interpreted ((<~), (<~~~)) 
Pandora/Paradigm/Primary/Transformer/Jack.hs view
@@ -8,12 +8,12 @@ import Pandora.Pattern.Functor.Traversable (Traversable ((<-/-))) import Pandora.Pattern.Functor.Bindable (Bindable ((=<<), (==<<))) import Pandora.Pattern.Functor.Extendable (Extendable ((<<=), (<<==)))-import Pandora.Pattern.Transformer.Liftable (Liftable (lift))-import Pandora.Pattern.Transformer.Hoistable (Hoistable ((/|\)))+import Pandora.Pattern.Transformation.Liftable (Liftable (lift))+import Pandora.Pattern.Transformation.Hoistable (Hoistable ((/|\))) import Pandora.Pattern.Object.Setoid (Setoid ((==))) import Pandora.Pattern.Object.Chain (Chain ((<=>)))-import Pandora.Paradigm.Algebraic.Exponential (type (-->))-import Pandora.Paradigm.Algebraic.Product ((:*:))+import Pandora.Pattern.Operation.Exponential (type (-->))+import Pandora.Pattern.Operation.Product ((:*:)) import Pandora.Paradigm.Algebraic (point) import Pandora.Paradigm.Primary.Object.Boolean (Boolean (False)) import Pandora.Paradigm.Primary.Object.Ordering (Ordering (Less, Greater))
Pandora/Paradigm/Primary/Transformer/Kan.hs view
@@ -6,7 +6,7 @@ import Pandora.Pattern.Functor.Contravariant (Contravariant ((>-|-))) import Pandora.Pattern.Functor.Covariant (Covariant ((<-|-))) import Pandora.Paradigm.Primary.Auxiliary (Horizontal (Left, Right))-import Pandora.Paradigm.Algebraic.Exponential ()+import Pandora.Pattern.Operation.Exponential ()  data family Kan (v :: * -> k) (t :: * -> *) (u :: * -> *) b a 
Pandora/Paradigm/Primary/Transformer/Outline.hs view
@@ -4,9 +4,9 @@ import Pandora.Pattern.Semigroupoid ((.)) import Pandora.Pattern.Category (identity, (<--), (<----), (<------)) import Pandora.Pattern.Functor.Covariant (Covariant ((<-|-)))-import Pandora.Pattern.Transformer.Liftable (Liftable (lift))-import Pandora.Pattern.Transformer.Hoistable (Hoistable ((/|\)))-import Pandora.Paradigm.Algebraic.Exponential ()+import Pandora.Pattern.Transformation.Liftable (Liftable (lift))+import Pandora.Pattern.Transformation.Hoistable (Hoistable ((/|\)))+import Pandora.Pattern.Operation.Exponential ()  data Outline t a where 	Line :: a -> Outline t a
Pandora/Paradigm/Primary/Transformer/Reverse.hs view
@@ -9,15 +9,15 @@ import Pandora.Pattern.Functor.Monoidal (Monoidal (unit)) import Pandora.Pattern.Functor.Traversable (Traversable ((<-/-), (<-/--))) import Pandora.Pattern.Functor.Distributive (Distributive ((-<<), (--<<)))-import Pandora.Pattern.Transformer.Liftable (Liftable (lift))-import Pandora.Pattern.Transformer.Lowerable (Lowerable (lower))-import Pandora.Pattern.Transformer.Hoistable (Hoistable ((/|\)))+import Pandora.Pattern.Transformation.Liftable (Liftable (lift))+import Pandora.Pattern.Transformation.Lowerable (Lowerable (lower))+import Pandora.Pattern.Transformation.Hoistable (Hoistable ((/|\))) import Pandora.Paradigm.Primary.Transformer.Backwards (Backwards (Backwards))-import Pandora.Paradigm.Algebraic.Exponential (type (<--), type (-->))-import Pandora.Paradigm.Algebraic.Product ((:*:) ((:*:)))-import Pandora.Paradigm.Algebraic.Sum ((:+:))-import Pandora.Paradigm.Algebraic.One (One (One))-import Pandora.Paradigm.Algebraic (point, extract, empty, (<-||-))+import Pandora.Pattern.Operation.Exponential (type (--<), type (-->))+import Pandora.Pattern.Operation.Product ((:*:) ((:*:)))+import Pandora.Pattern.Operation.Sum ((:+:))+import Pandora.Pattern.Operation.One (One (One))+import Pandora.Paradigm.Algebraic (point, extract, empty, (<<-|-)) import Pandora.Pattern.Morphism.Flip (Flip (Flip)) import Pandora.Pattern.Morphism.Straight (Straight (Straight)) import Pandora.Core.Interpreted (Interpreted (Primary, run, unite, (<~), (<~~~)))@@ -33,10 +33,10 @@ instance (Covariant (->) (->) t, Monoidal (-->) (-->) (:*:) (:*:) t) => Monoidal (-->) (-->) (:*:) (:*:) (Reverse t) where 	unit _ = Straight <-- Reverse . point . (<~ One) -instance (Semimonoidal (<--) (:*:) (:*:) t, Covariant (->) (->) t) => Semimonoidal (<--) (:*:) (:*:) (Reverse t) where-	mult = Flip <-- (Reverse <-||-) . (Reverse <-|-) . (mult @(<--) <~) . run+instance (Semimonoidal (--<) (:*:) (:*:) t, Covariant (->) (->) t) => Semimonoidal (--<) (:*:) (:*:) (Reverse t) where+	mult = Flip <-- (Reverse <<-|-) . (Reverse <-|-) . (mult @(--<) <~) . run -instance (Covariant (->) (->) t, Monoidal (<--) (-->) (:*:) (:*:) t) => Monoidal (<--) (-->) (:*:) (:*:) (Reverse t) where+instance (Covariant (->) (->) t, Monoidal (--<) (-->) (:*:) (:*:) t) => Monoidal (--<) (-->) (:*:) (:*:) (Reverse t) where 	unit _ = Flip <-- \(Reverse x) -> Straight (\_ -> extract x)  instance (Semimonoidal (-->) (:*:) (:+:) t, Covariant (->) (->) t) => Semimonoidal (-->) (:*:) (:+:) (Reverse t) where
Pandora/Paradigm/Primary/Transformer/Tap.hs view
@@ -9,12 +9,12 @@ import Pandora.Pattern.Functor.Monoidal (Monoidal (unit)) import Pandora.Pattern.Functor.Traversable (Traversable ((<-/-))) import Pandora.Pattern.Functor.Extendable (Extendable ((<<=), (<<==)))-import Pandora.Pattern.Transformer.Lowerable (Lowerable (lower))-import Pandora.Pattern.Transformer.Hoistable (Hoistable ((/|\)))+import Pandora.Pattern.Transformation.Lowerable (Lowerable (lower))+import Pandora.Pattern.Transformation.Hoistable (Hoistable ((/|\))) import Pandora.Core.Interpreted ((<~), (<~~~))-import Pandora.Paradigm.Algebraic ((<-*--), (<-||--), extract)-import Pandora.Paradigm.Algebraic.Product ((:*:) ((:*:)), (<:*:>))-import Pandora.Paradigm.Algebraic.Exponential (type (<--), type (-->))+import Pandora.Paradigm.Algebraic ((<-*--), (<<-|--), extract, type (<:*:>), (<:*:>))+import Pandora.Pattern.Operation.Product ((:*:) ((:*:)))+import Pandora.Pattern.Operation.Exponential (type (--<), type (-->)) import Pandora.Pattern.Morphism.Flip (Flip (Flip)) import Pandora.Pattern.Morphism.Straight (Straight (Straight)) import Pandora.Paradigm.Schemes.T_U (T_U (T_U), type (<:.:>))@@ -27,16 +27,16 @@ instance Semimonoidal (-->) (:*:) (:*:) t => Semimonoidal (-->) (:*:) (:*:) (Tap t) where 	mult = Straight <-- \(Tap x xs :*: Tap y ys) -> Tap <---- x :*: y <---- mult @(-->) <~~~ xs :*: ys -instance Semimonoidal (<--) (:*:) (:*:) t => Semimonoidal (<--) (:*:) (:*:) (Tap t) where-	mult = Flip <-- \(Tap (x :*: y) xys) -> Tap x <-||-- Tap y <-|- mult @(<--) <~ xys+instance Semimonoidal (--<) (:*:) (:*:) t => Semimonoidal (--<) (:*:) (:*:) (Tap t) where+	mult = Flip <-- \(Tap (x :*: y) xys) -> Tap x <<-|-- Tap y <-|- mult @(--<) <~ xys -instance Semimonoidal (<--) (:*:) (:*:) t => Monoidal (<--) (-->) (:*:) (:*:) (Tap t) where+instance Semimonoidal (--<) (:*:) (:*:) t => Monoidal (--<) (-->) (:*:) (:*:) (Tap t) where 	unit _ = Flip <-- \(Tap x _) -> Straight (\_ -> x)  instance Traversable (->) (->) t => Traversable (->) (->) (Tap t) where 	f <-/- Tap x xs = Tap <-|-- f x <-*-- f <-/- xs -instance (Semimonoidal (<--) (:*:) (:*:) t, Extendable (->) t, Covariant (->) (->) t) => Extendable (->) (Tap t) where+instance (Semimonoidal (--<) (:*:) (:*:) t, Extendable (->) t, Covariant (->) (->) t) => Extendable (->) (Tap t) where 	f <<= x = Tap <--- f x <--- f . Tap (extract x) <<= lower x  instance Lowerable (->) Tap where
Pandora/Paradigm/Primary/Transformer/Yoneda.hs view
@@ -5,8 +5,8 @@ import Pandora.Pattern.Semigroupoid ((.)) import Pandora.Pattern.Category ((<--)) import Pandora.Pattern.Functor.Covariant (Covariant ((<-|-)))-import Pandora.Pattern.Transformer.Liftable (Liftable (lift))-import Pandora.Paradigm.Algebraic.Exponential ()+import Pandora.Pattern.Transformation.Liftable (Liftable (lift))+import Pandora.Pattern.Operation.Exponential ()  newtype Yoneda t a = Yoneda 	{ yoneda :: forall b . (a -> b) -> t b }
Pandora/Paradigm/Schemes/TT.hs view
@@ -14,14 +14,14 @@ import Pandora.Pattern.Functor.Traversable (Traversable ((<-/-)), (<-/-/-)) import Pandora.Pattern.Functor.Distributive (Distributive ((-<<))) import Pandora.Pattern.Functor.Bindable (Bindable ((=<<)))-import Pandora.Pattern.Transformer.Liftable (Liftable (lift))-import Pandora.Pattern.Transformer.Lowerable (Lowerable (lower))-import Pandora.Pattern.Transformer.Hoistable (Hoistable ((/|\)))-import Pandora.Paradigm.Algebraic.Exponential (type (<--), type (-->))-import Pandora.Paradigm.Algebraic.Product ((:*:) ((:*:)))-import Pandora.Paradigm.Algebraic.Sum ((:+:), bitraverse_sum)-import Pandora.Paradigm.Algebraic.One (One (One))-import Pandora.Paradigm.Algebraic (empty, point, extract, (<-||-), (<-||---))+import Pandora.Pattern.Transformation.Liftable (Liftable (lift))+import Pandora.Pattern.Transformation.Lowerable (Lowerable (lower))+import Pandora.Pattern.Transformation.Hoistable (Hoistable ((/|\)))+import Pandora.Pattern.Operation.Exponential (type (--<), type (-->))+import Pandora.Pattern.Operation.Product ((:*:) ((:*:)))+import Pandora.Pattern.Operation.Sum ((:+:), bitraverse_sum)+import Pandora.Pattern.Operation.One (One (One))+import Pandora.Paradigm.Algebraic (empty, point, extract, (<<-|-), (<<-|---)) import Pandora.Pattern.Morphism.Flip (Flip (Flip)) import Pandora.Pattern.Morphism.Straight (Straight (Straight)) @@ -43,7 +43,7 @@ 	(<-|-) f = (=#-) ((<-|-|-) f)  instance (Covariant (->) (->) t, Semimonoidal (-->) (:*:) (:*:) t, Semimonoidal (-->) (:*:) (:*:) t') => Semimonoidal (-->) (:*:) (:*:) (t <::> t') where-	mult = Straight <-- TT . (<-|-) (mult @(-->) <~) . (mult @(-->) <~) . (run <-||-) . (run @(->) <-|-)+	mult = Straight <-- TT . (<-|-) (mult @(-->) <~) . (mult @(-->) <~) . (run <<-|-) . (run @(->) <-|-)  instance (Covariant (->) (->) t, Covariant (->) (->) t', Semimonoidal (-->) (:*:) (:*:) t', Monoidal (-->) (-->) (:*:) (:*:) t, Monoidal (-->) (-->) (:*:) (:*:) t') => Monoidal (-->) (-->) (:*:) (:*:) (t <::> t') where 	unit _ = Straight <-- TT . point . point . (<~ One)@@ -57,10 +57,10 @@ instance (Covariant (->) (->) t, Covariant (->) (->) t', Semimonoidal (-->) (:*:) (:+:) t, Monoidal (-->) (-->) (:*:) (:+:) t) => Monoidal (-->) (-->) (:*:) (:+:) (t <::> t') where 	unit _ = Straight <-- \_ -> TT empty -instance (Covariant (->) (->) t, Semimonoidal (<--) (:*:) (:*:) t, Semimonoidal (<--) (:*:) (:*:) t') => Semimonoidal (<--) (:*:) (:*:) (t <::> t') where-	mult = Flip <-- \(TT xys) -> TT <-||--- TT <-|--- mult @(<--) <~~~~ (mult @(<--) <~) <-|- xys+instance (Covariant (->) (->) t, Semimonoidal (--<) (:*:) (:*:) t, Semimonoidal (--<) (:*:) (:*:) t') => Semimonoidal (--<) (:*:) (:*:) (t <::> t') where+	mult = Flip <-- \(TT xys) -> TT <<-|--- TT <-|--- mult @(--<) <~~~~ (mult @(--<) <~) <-|- xys -instance (Covariant (->) (->) t, Monoidal (<--) (-->) (:*:) (:*:) t, Monoidal (<--) (-->) (:*:) (:*:) t') => Monoidal (<--) (-->) (:*:) (:*:) (t <::> t') where+instance (Covariant (->) (->) t, Monoidal (--<) (-->) (:*:) (:*:) t, Monoidal (--<) (-->) (:*:) (:*:) t') => Monoidal (--<) (-->) (:*:) (:*:) (t <::> t') where 	unit _ = Flip <-- \(TT x) -> Straight <---- constant <--- extract <-- extract x  instance (Traversable (->) (->) t, Traversable (->) (->) t') => Traversable (->) (->) (t <::> t') where@@ -73,7 +73,7 @@ 	lift :: Covariant (->) (->) t' => t' ~> t <::> t' 	lift = TT . point -instance Monoidal (<--) (-->) (:*:) (:*:) t => Lowerable (->) (TT Covariant Covariant t) where+instance Monoidal (--<) (-->) (:*:) (:*:) t => Lowerable (->) (TT Covariant Covariant t) where 	lower :: t <::> t' ~> t' 	lower (TT x) = extract x 
Pandora/Paradigm/Schemes/TU.hs view
@@ -13,14 +13,14 @@ import Pandora.Pattern.Functor.Traversable (Traversable ((<-/-)), (<-/-/-)) import Pandora.Pattern.Functor.Distributive (Distributive ((-<<))) import Pandora.Pattern.Functor.Bindable (Bindable ((=<<)))-import Pandora.Pattern.Transformer.Liftable (Liftable (lift))-import Pandora.Pattern.Transformer.Lowerable (Lowerable (lower))-import Pandora.Pattern.Transformer.Hoistable (Hoistable ((/|\)))-import Pandora.Paradigm.Algebraic.Exponential (type (<--), type (-->))-import Pandora.Paradigm.Algebraic.Product ((:*:) ((:*:)))-import Pandora.Paradigm.Algebraic.Sum ((:+:))-import Pandora.Paradigm.Algebraic.One (One (One))-import Pandora.Paradigm.Algebraic (empty, point, extract, (<-||-), (<-||---))+import Pandora.Pattern.Transformation.Liftable (Liftable (lift))+import Pandora.Pattern.Transformation.Lowerable (Lowerable (lower))+import Pandora.Pattern.Transformation.Hoistable (Hoistable ((/|\)))+import Pandora.Pattern.Operation.Exponential (type (--<), type (-->))+import Pandora.Pattern.Operation.Product ((:*:) ((:*:)))+import Pandora.Pattern.Operation.Sum ((:+:))+import Pandora.Pattern.Operation.One (One (One))+import Pandora.Paradigm.Algebraic (empty, point, extract, (<<-|-), (<<-|---)) import Pandora.Pattern.Morphism.Flip (Flip (Flip)) import Pandora.Pattern.Morphism.Straight (Straight (Straight)) @@ -42,7 +42,7 @@ 	(<-|-) f = (=#-) ((<-|-|-) f)  instance (Covariant (->) (->) t, Semimonoidal (-->) (:*:) (:*:) t, Semimonoidal (-->) (:*:) (:*:) u) => Semimonoidal (-->) (:*:) (:*:) (t <:.> u) where-	mult = Straight <-- TU . (<-|-) (mult @(-->) <~) . (mult @(-->) <~) . (run <-||-) . (run @(->) <-|-)+	mult = Straight <-- TU . (<-|-) (mult @(-->) <~) . (mult @(-->) <~) . (run <<-|-) . (run @(->) <-|-)  instance (Covariant (->) (->) t, Covariant (->) (->) u, Semimonoidal (-->) (:*:) (:*:) u, Monoidal (-->) (-->) (:*:) (:*:) t, Monoidal (-->) (-->) (:*:) (:*:) u) => Monoidal (-->) (-->) (:*:) (:*:) (t <:.> u) where 	unit _ = Straight <-- TU . point . point . (<~ One)@@ -56,10 +56,10 @@ instance (Covariant (->) (->) t, Covariant (->) (->) u, Semimonoidal (-->) (:*:) (:*:) t, Semimonoidal (-->) (:*:) (:+:) u, Monoidal (-->) (-->) (:*:) (:+:) t) => Monoidal (-->) (-->) (:*:) (:+:) (t <:.> u) where 	unit _ = Straight <-- \_ -> TU empty -instance (Covariant (->) (->) t, Semimonoidal (<--) (:*:) (:*:) t, Semimonoidal (<--) (:*:) (:*:) u) => Semimonoidal (<--) (:*:) (:*:) (t <:.> u) where-	mult = Flip <-- \(TU xys) -> TU <-||--- TU <-|--- mult @(<--) <~~~~ (mult @(<--) <~) <-|- xys+instance (Covariant (->) (->) t, Semimonoidal (--<) (:*:) (:*:) t, Semimonoidal (--<) (:*:) (:*:) u) => Semimonoidal (--<) (:*:) (:*:) (t <:.> u) where+	mult = Flip <-- \(TU xys) -> TU <<-|--- TU <-|--- mult @(--<) <~~~~ (mult @(--<) <~) <-|- xys -instance (Covariant (->) (->) t, Monoidal (<--) (-->) (:*:) (:*:) t, Monoidal (<--) (-->) (:*:) (:*:) u) => Monoidal (<--) (-->) (:*:) (:*:) (t <:.> u) where+instance (Covariant (->) (->) t, Monoidal (--<) (-->) (:*:) (:*:) t, Monoidal (--<) (-->) (:*:) (:*:) u) => Monoidal (--<) (-->) (:*:) (:*:) (t <:.> u) where 	unit _ = Flip <-- \(TU x) -> Straight (\_ -> extract <-- extract x)  instance (Traversable (->) (->) t, Traversable (->) (->) u) => Traversable (->) (->) (t <:.> u) where@@ -72,7 +72,7 @@ 	lift :: Covariant (->) (->) u => u ~> t <:.> u 	lift = TU . point -instance Monoidal (<--) (-->) (:*:) (:*:) t => Lowerable (->) (TU Covariant Covariant t) where+instance Monoidal (--<) (-->) (:*:) (:*:) t => Lowerable (->) (TU Covariant Covariant t) where 	lower :: t <:.> u ~> u 	lower (TU x) = extract x 
Pandora/Paradigm/Schemes/TUT.hs view
@@ -6,6 +6,7 @@ import Pandora.Pattern.Betwixt (Betwixt) import Pandora.Pattern.Semigroupoid (Semigroupoid ((.))) import Pandora.Pattern.Category (identity, (<--), (<---), (<----), (<------))+import Pandora.Pattern.Kernel (constant) import Pandora.Pattern.Functor.Covariant (Covariant, Covariant ((<-|-), (<-|--), (<-|---), (<-|-|-), (<-|-|---), (<-|-|-|-))) import Pandora.Pattern.Functor.Contravariant (Contravariant) import Pandora.Pattern.Functor.Semimonoidal (Semimonoidal (mult))@@ -14,13 +15,13 @@ import Pandora.Pattern.Functor.Distributive (Distributive ((-<<))) import Pandora.Pattern.Functor.Bindable (Bindable ((=<<))) import Pandora.Pattern.Functor.Adjoint (Adjoint ((-|), (--|), (|-), (|--)))-import Pandora.Pattern.Transformer.Liftable (Liftable (lift))-import Pandora.Pattern.Transformer.Lowerable (Lowerable (lower))-import Pandora.Paradigm.Algebraic.Exponential (type (<--), type (-->))-import Pandora.Paradigm.Algebraic.Product ((:*:) ((:*:)))-import Pandora.Paradigm.Algebraic.Sum ((:+:) (Option, Adoption))-import Pandora.Paradigm.Algebraic.One (One (One))-import Pandora.Paradigm.Algebraic (point, extract, (<-||-))+import Pandora.Pattern.Transformation.Liftable (Liftable (lift))+import Pandora.Pattern.Transformation.Lowerable (Lowerable (lower))+import Pandora.Pattern.Operation.Exponential (type (--<), type (-->))+import Pandora.Pattern.Operation.Product ((:*:) ((:*:)))+import Pandora.Pattern.Operation.Sum ((:+:) (Option, Adoption))+import Pandora.Pattern.Operation.One (One (One))+import Pandora.Paradigm.Algebraic (point, extract, empty, (<<-|-)) import Pandora.Pattern.Morphism.Flip (Flip (Flip)) import Pandora.Pattern.Morphism.Straight (Straight (Straight)) @@ -48,19 +49,24 @@ instance (Adjoint (->) (->) t' t, Bindable (->) u) => Semimonoidal (-->) (:*:) (:*:) (t <:<.>:> t' >>>>>>>> u) where 	mult = Straight <-- \(TUT x :*: TUT y) -> TUT ((((\r -> (<-|-|-|-) (r :*:) y) |-) =<<) <-|- x) -instance (Covariant (->) (->) t, Semimonoidal (<--) (:*:) (:*:) t, Covariant (->) (->) u, Semimonoidal (<--) (:*:) (:*:) u, Covariant (->) (->) t', Semimonoidal (<--) (:*:) (:*:) t') => Semimonoidal (<--) (:*:) (:*:) (t <:<.>:> t' >>>>>>>> u) where-	mult = Flip <-- (TUT <-||-) . (TUT <-|-) . (mult @(<--) <~) . (<-|-) (mult @(<--) <~) . (<-|-|-) @_ @(->) (mult @(<--) <~) . run+instance (Covariant (->) (->) t, Semimonoidal (--<) (:*:) (:*:) t, Covariant (->) (->) u, Semimonoidal (--<) (:*:) (:*:) u, Covariant (->) (->) t', Semimonoidal (--<) (:*:) (:*:) t') => Semimonoidal (--<) (:*:) (:*:) (t <:<.>:> t' >>>>>>>> u) where+	mult = Flip <-- (TUT <<-|-) . (TUT <-|-) . (mult @(--<) <~) . (<-|-) (mult @(--<) <~) . (<-|-|-) @_ @(->) (mult @(--<) <~) . run -instance (Covariant (->) (->) t, Covariant (->) (->) u, Semimonoidal (<--) (:*:) (:*:) t, Semimonoidal (<--) (:*:) (:*:) t', Monoidal (<--) (-->) (:*:) (:*:) u, Adjoint (->) (->) t t') => Monoidal (<--) (-->) (:*:) (:*:) (t <:<.>:> t' >>>>>>>> u) where+instance (Covariant (->) (->) t, Covariant (->) (->) u, Semimonoidal (--<) (:*:) (:*:) t, Semimonoidal (--<) (:*:) (:*:) t', Monoidal (--<) (-->) (:*:) (:*:) u, Adjoint (->) (->) t t') => Monoidal (--<) (-->) (:*:) (:*:) (t <:<.>:> t' >>>>>>>> u) where 	unit _ = Flip <-- \(TUT xys) -> Straight (\_ -> (extract |-) xys)  -- TODO: generalize on (->) and (:*:)-instance {-# OVERLAPS #-} (Covariant (->) (->) u, Semimonoidal (-->) (:*:) (:+:) u) => Semimonoidal (-->) (:*:) (:+:) ((->) s <:<.>:> (:*:) s >>>>>>>> u) where- mult = Straight <-- \(TUT x :*: TUT y) -> TUT-	<------ product_over_sum-		<-|-|- mult @(-->) @(:*:) @(:+:)-			<-|-- mult @(-->) @(:*:) @(:*:)-				<~~~ x :*: y+instance {-# OVERLAPS #-} (Covariant (->) (->) u, Semimonoidal (-->) (:*:) (:+:) u) +	=> Semimonoidal (-->) (:*:) (:+:) ((->) s <:<.>:> (:*:) s >>>>>>>> u) where+	mult = Straight <-- \(TUT x :*: TUT y) -> TUT+		<------ product_over_sum+			<-|-|- mult @(-->) @(:*:) @(:+:)+				<-|-- mult @(-->) @(:*:) @(:*:)+					<~~~ x :*: y++instance {-# OVERLAPS #-} (Covariant (->) (->) u, Monoidal (-->) (-->) (:*:) (:+:) u) +	=> Monoidal (-->) (-->) (:*:) (:+:) ((->) s <:<.>:> (:*:) s >>>>>>>> u) where+	unit _ = Straight <-- \_ -> empty  product_over_sum :: (s :*: a) :+: (s :*: b) -> s :*: (a :+: b) product_over_sum (Option (s :*: x)) = s :*: Option x
Pandora/Paradigm/Schemes/T_U.hs view
@@ -7,7 +7,7 @@ import Pandora.Pattern.Morphism.Flip (Flip) import Pandora.Pattern.Functor.Covariant (Covariant ((<-|-), (<-|-|-))) import Pandora.Pattern.Functor.Contravariant (Contravariant ((>-|-|-)))-import Pandora.Paradigm.Algebraic.Exponential ()+import Pandora.Pattern.Operation.Exponential ()  newtype T_U ct cu p t u a = T_U (p (t a) (u a)) 
Pandora/Paradigm/Schemes/UT.hs view
@@ -13,13 +13,13 @@ import Pandora.Pattern.Functor.Monoidal (Monoidal (unit)) import Pandora.Pattern.Functor.Bindable (Bindable ((=<<), (==<<))) import Pandora.Pattern.Functor.Traversable (Traversable ((<-/--)))-import Pandora.Pattern.Transformer.Liftable (Liftable (lift))-import Pandora.Pattern.Transformer.Lowerable (Lowerable (lower))-import Pandora.Paradigm.Algebraic.Exponential (type (<--), type (-->))-import Pandora.Paradigm.Algebraic.Product ((:*:) ((:*:)))-import Pandora.Paradigm.Algebraic.Sum ((:+:))-import Pandora.Paradigm.Algebraic.One (One (One))-import Pandora.Paradigm.Algebraic (point, extract, (<-||-), (<-||---))+import Pandora.Pattern.Transformation.Liftable (Liftable (lift))+import Pandora.Pattern.Transformation.Lowerable (Lowerable (lower))+import Pandora.Pattern.Operation.Exponential (type (--<), type (-->))+import Pandora.Pattern.Operation.Product ((:*:) ((:*:)))+import Pandora.Pattern.Operation.Sum ((:+:))+import Pandora.Pattern.Operation.One (One (One))+import Pandora.Paradigm.Algebraic (point, extract, (<<-|-), (<<-|---)) import Pandora.Pattern.Morphism.Flip (Flip (Flip))  newtype UT ct cu t u a = UT (u :. t >>> a)@@ -40,7 +40,7 @@ 	(<-|-) f = (=#-) ((<-|-|-) f)  instance (Covariant (->) (->) u, Semimonoidal (-->) (:*:) (:*:) t, Semimonoidal (-->) (:*:) (:*:) u) => Semimonoidal (-->) (:*:) (:*:) (t <.:> u) where-	mult = Straight <-- UT . (<-|-) (mult @(-->) <~) . (mult @(-->) <~) . (run <-||-) . (run @(->) <-|-)+	mult = Straight <-- UT . (<-|-) (mult @(-->) <~) . (mult @(-->) <~) . (run <<-|-) . (run @(->) <-|-)  instance (Covariant (->) (->) u, Covariant (->) (->) t, Semimonoidal (-->) (:*:) (:*:) u, Semimonoidal (-->) (:*:) (:+:) t) => Semimonoidal (-->) (:*:) (:+:) (t <.:> u) where 	mult = Straight <-- \(UT x :*: UT y) -> UT@@ -54,16 +54,16 @@ instance (Traversable (->) (->) t, Bindable (->) t, Semimonoidal (-->) (:*:) (:*:) u, Monoidal (-->) (-->) (:*:) (:*:) u, Bindable (->) u) => Bindable (->) (t <.:> u) where 	f =<< UT x = UT <---- ((identity =<<) <-|-) . (run . f <-/--) ==<< x -instance (Covariant (->) (->) u, Semimonoidal (<--) (:*:) (:*:) t, Semimonoidal (<--) (:*:) (:*:) u) => Semimonoidal (<--) (:*:) (:*:) (t <.:> u) where-	mult = Flip <-- \(UT xys) -> UT <-||--- UT <-|--- mult @(<--) <~~~~ (mult @(<--) <~) <-|- xys+instance (Covariant (->) (->) u, Semimonoidal (--<) (:*:) (:*:) t, Semimonoidal (--<) (:*:) (:*:) u) => Semimonoidal (--<) (:*:) (:*:) (t <.:> u) where+	mult = Flip <-- \(UT xys) -> UT <<-|--- UT <-|--- mult @(--<) <~~~~ (mult @(--<) <~) <-|- xys -instance (Covariant (->) (->) u, Monoidal (<--) (-->) (:*:) (:*:) t, Monoidal (<--) (-->) (:*:) (:*:) u) => Monoidal (<--) (-->) (:*:) (:*:) (t <.:> u) where+instance (Covariant (->) (->) u, Monoidal (--<) (-->) (:*:) (:*:) t, Monoidal (--<) (-->) (:*:) (:*:) u) => Monoidal (--<) (-->) (:*:) (:*:) (t <.:> u) where 	unit _ = Flip <-- \(UT x) -> Straight (\_ -> extract <-- extract x)  instance Monoidal (-->) (-->) (:*:) (:*:) t => Liftable (->) (UT Covariant Covariant t) where 	lift :: Covariant (->) (->) u => u ~> t <.:> u 	lift x = UT <---- point <-|- x -instance Monoidal (<--) (-->) (:*:) (:*:) t => Lowerable (->) (UT Covariant Covariant t) where+instance Monoidal (--<) (-->) (:*:) (:*:) t => Lowerable (->) (UT Covariant Covariant t) where 	lower :: Covariant (->) (->) u => t <.:> u ~> u 	lower (UT x) = extract <-|- x
Pandora/Paradigm/Structure.hs view
@@ -12,15 +12,15 @@ import Pandora.Pattern.Category ((<--), (<---), identity) import Pandora.Pattern.Kernel (constant) import Pandora.Pattern.Functor.Covariant (Covariant ((<-|-)))-import Pandora.Pattern.Transformer.Liftable (lift)-import Pandora.Pattern.Transformer.Lowerable (lower)+import Pandora.Pattern.Transformation.Liftable (lift)+import Pandora.Pattern.Transformation.Lowerable (lower) import Pandora.Pattern.Object.Semigroup ((+)) import Pandora.Paradigm.Inventory.Some.Optics () import Pandora.Paradigm.Inventory.Some.Store (Store (Store))-import Pandora.Paradigm.Algebraic.Exponential ((%))-import Pandora.Paradigm.Algebraic.Product ((:*:) ((:*:)), type (<:*:>), attached)-import Pandora.Paradigm.Algebraic.Sum ((:+:) (Option, Adoption))-import Pandora.Paradigm.Algebraic (extract)+import Pandora.Pattern.Operation.Exponential ((%))+import Pandora.Pattern.Operation.Product ((:*:) ((:*:)), attached)+import Pandora.Pattern.Operation.Sum ((:+:) (Option, Adoption))+import Pandora.Paradigm.Algebraic (type (<:*:>), extract) import Pandora.Paradigm.Primary.Functor.Exactly (Exactly (Exactly)) import Pandora.Paradigm.Primary.Functor.Conclusion (Conclusion (Failure, Success), conclusion) import Pandora.Paradigm.Primary.Functor.Maybe (Maybe (Just, Nothing))
Pandora/Paradigm/Structure/Ability/Monotonic.hs view
@@ -2,8 +2,8 @@  import Pandora.Pattern.Category ((<----)) import Pandora.Pattern.Kernel (constant)-import Pandora.Paradigm.Algebraic.Exponential ((.:..))-import Pandora.Paradigm.Algebraic.Sum ((:+:) (Option, Adoption))+import Pandora.Pattern.Operation.Exponential ((.:..))+import Pandora.Pattern.Operation.Sum ((:+:) (Option, Adoption))  class Monotonic a e where 	{-# MINIMAL reduce #-}@@ -18,8 +18,8 @@  instance Monotonic a (o :+: a) where 	reduce fun def (Adoption x) = fun x def-	reduce _ def (Option x) = def+	reduce _ def (Option _) = def  instance Monotonic o (o :+: a) where 	reduce fun def (Option x) = fun x def-	reduce _ def (Adoption x) = def+	reduce _ def (Adoption _) = def
Pandora/Paradigm/Structure/Ability/Morphable.hs view
@@ -7,7 +7,7 @@ import Pandora.Pattern.Category ((<--)) import Pandora.Pattern.Object.Chain (Chain ((<=>))) import Pandora.Pattern.Object.Setoid (Setoid)-import Pandora.Paradigm.Algebraic.Product ((:*:) ((:*:)))+import Pandora.Pattern.Operation.Product ((:*:) ((:*:))) import Pandora.Paradigm.Algebraic (extract) import Pandora.Paradigm.Primary.Functor (Comparison) import Pandora.Paradigm.Primary.Functor.Convergence (Convergence (Convergence))
Pandora/Paradigm/Structure/Ability/Substructure.hs view
@@ -7,13 +7,14 @@ import Pandora.Pattern.Category ((<--), (<---), (<----)) import Pandora.Pattern.Kernel (constant) import Pandora.Pattern.Functor.Covariant (Covariant ((<-|-), (<-|-|-)))-import Pandora.Pattern.Transformer.Liftable (lift)-import Pandora.Pattern.Transformer.Lowerable (lower)+import Pandora.Pattern.Transformation.Liftable (lift)+import Pandora.Pattern.Transformation.Lowerable (lower) import Pandora.Paradigm.Inventory.Some.Store (Store (Store)) import Pandora.Paradigm.Inventory.Some.Optics (type (@>>>), view, replace)-import Pandora.Paradigm.Algebraic.Exponential ((%))-import Pandora.Paradigm.Algebraic.Product ((:*:) ((:*:)), type (<:*:>), (<:*:>))+import Pandora.Pattern.Operation.Exponential ((%))+import Pandora.Pattern.Operation.Product ((:*:) ((:*:))) import Pandora.Paradigm.Algebraic.Functor ((>-||-), extract, empty)+import Pandora.Paradigm.Algebraic (type (<:*:>), (<:*:>)) import Pandora.Paradigm.Primary.Auxiliary (Horizontal (Left, Right)) import Pandora.Paradigm.Primary.Functor.Exactly (Exactly (Exactly)) import Pandora.Paradigm.Primary.Functor.Maybe (Maybe (Just, Nothing))
Pandora/Paradigm/Structure/Interface/Set.hs view
@@ -11,8 +11,8 @@ import Pandora.Pattern.Object.Semigroup ((+)) import Pandora.Pattern.Object.Quasiring (one) import Pandora.Paradigm.Algebraic ()-import Pandora.Paradigm.Algebraic.Product (attached)-import Pandora.Paradigm.Algebraic.Exponential ((%))+import Pandora.Pattern.Operation.Product (attached)+import Pandora.Pattern.Operation.Exponential ((%)) import Pandora.Paradigm.Primary.Functor.Convergence (Convergence (Convergence)) import Pandora.Paradigm.Primary.Functor.Maybe (Maybe (Nothing)) import Pandora.Paradigm.Primary.Functor.Predicate (Predicate, equate)
Pandora/Paradigm/Structure/Interface/Zipper.hs view
@@ -15,11 +15,11 @@ import Pandora.Pattern.Functor.Traversable (Traversable ((<-/-), (<-/---))) import Pandora.Pattern.Functor.Semimonoidal (Semimonoidal (mult)) import Pandora.Pattern.Functor.Monoidal (Monoidal (unit))-import Pandora.Pattern.Transformer.Liftable (lift)-import Pandora.Pattern.Transformer.Lowerable (lower)-import Pandora.Paradigm.Algebraic.Exponential (type (<--), type (-->), (%))-import Pandora.Paradigm.Algebraic.Product ((:*:) ((:*:)), type (<:*:>), (<:*:>))-import Pandora.Paradigm.Algebraic ((<-*-), (<-*--), (<-*---), extract, point)+import Pandora.Pattern.Transformation.Liftable (lift)+import Pandora.Pattern.Transformation.Lowerable (lower)+import Pandora.Pattern.Operation.Exponential (type (--<), type (-->), (%))+import Pandora.Pattern.Operation.Product ((:*:) ((:*:)))+import Pandora.Paradigm.Algebraic ((<-*-), (<-*--), (<-*---), extract, point, type (<:*:>), (<:*:>)) import Pandora.Paradigm.Primary.Functor.Exactly (Exactly (Exactly)) import Pandora.Paradigm.Primary.Functor.Maybe (Maybe) import Pandora.Paradigm.Primary.Functor.Tagged (Tagged)@@ -39,11 +39,11 @@  type Zipper (structure :: * -> *) = Exactly <:*:> Breadcrumbs structure -instance {-# OVERLAPS #-} Semimonoidal (<--) (:*:) (:*:) t-	=> Semimonoidal (<--) (:*:) (:*:) (Exactly <:*:> t) where+instance {-# OVERLAPS #-} Semimonoidal (--<) (:*:) (:*:) t+	=> Semimonoidal (--<) (:*:) (:*:) (Exactly <:*:> t) where 	mult = Flip <-- \(T_U (Exactly (x :*: y) :*: xys)) ->-		let xs :*: ys = mult @(<--) <~ xys in+		let xs :*: ys = mult @(--<) <~ xys in 			(Exactly x <:*:> xs) :*: (Exactly y <:*:> ys) -instance {-# OVERLAPS #-} Semimonoidal (<--) (:*:) (:*:) t => Monoidal (<--) (-->) (:*:) (:*:) (Exactly <:*:> t) where+instance {-# OVERLAPS #-} Semimonoidal (--<) (:*:) (:*:) t => Monoidal (--<) (-->) (:*:) (:*:) (Exactly <:*:> t) where 	unit _ = Flip <-- \(T_U (Exactly x :*: _)) -> Straight (\_ -> x)
Pandora/Paradigm/Structure/Modification/Comprehension.hs view
@@ -12,7 +12,7 @@ import Pandora.Pattern.Functor.Monoidal (Monoidal (unit)) import Pandora.Pattern.Functor.Traversable (Traversable ((<-/-))) import Pandora.Pattern.Functor.Bindable (Bindable ((=<<), (==<<)))-import Pandora.Pattern.Transformer.Liftable (lift)+import Pandora.Pattern.Transformation.Liftable (lift) import Pandora.Pattern.Object.Semigroup (Semigroup ((+))) import Pandora.Pattern.Object.Monoid (Monoid (zero)) import Pandora.Pattern.Object.Setoid (Setoid ((==)))@@ -21,9 +21,9 @@ import Pandora.Paradigm.Schemes.TT (TT (TT), type (<::>)) import Pandora.Paradigm.Schemes.T_U (T_U (T_U), type (<:.:>)) import Pandora.Paradigm.Structure.Ability.Morphable (Morphable (Morphing, morphing), Morph (Push), premorph)-import Pandora.Paradigm.Algebraic.Exponential (type (-->))-import Pandora.Paradigm.Algebraic.Product ((:*:) ((:*:)))-import Pandora.Paradigm.Algebraic.Sum ((:+:))+import Pandora.Pattern.Operation.Exponential (type (-->))+import Pandora.Pattern.Operation.Product ((:*:) ((:*:)))+import Pandora.Pattern.Operation.Sum ((:+:)) import Pandora.Paradigm.Algebraic (empty, (<-|-<-|-))  newtype Comprehension t a = Comprehension (t <::> Construction t >>>>> a)
Pandora/Paradigm/Structure/Modification/Prefixed.hs view
@@ -1,6 +1,6 @@ module Pandora.Paradigm.Structure.Modification.Prefixed where  import Pandora.Paradigm.Schemes (type (<::>))-import Pandora.Paradigm.Algebraic.Product ((:*:))+import Pandora.Pattern.Operation.Product ((:*:))  type Prefixed t k = t <::> (:*:) k
Pandora/Paradigm/Structure/Modification/Tape.hs view
@@ -2,34 +2,36 @@ {-# LANGUAGE UndecidableInstances #-} module Pandora.Paradigm.Structure.Modification.Tape where -import Pandora.Core.Functor (type (>), type (>>>))+import Pandora.Core.Functor (type (>), type (<), type (>>>)) import Pandora.Core.Impliable (Impliable (Arguments, imply))-import Pandora.Core.Interpreted (run, (=#-))+import Pandora.Core.Interpreted (run, (=#-), (<~~)) import Pandora.Pattern.Semigroupoid ((.))-import Pandora.Pattern.Category ((<--), (<---), (<----), (<------))+import Pandora.Pattern.Category ((<--), (<---), (<----)) import Pandora.Pattern.Kernel (constant) import Pandora.Pattern.Functor.Covariant (Covariant ((<-|-), (<-|--)))-import Pandora.Pattern.Functor.Traversable (Traversable ((<-/-), (<-/---))) import Pandora.Pattern.Functor.Bindable (Bindable ((====<<)))-import Pandora.Pattern.Functor.Semimonoidal (Semimonoidal (mult))+import Pandora.Pattern.Functor.Semimonoidal (Semimonoidal) import Pandora.Pattern.Functor.Monoidal (Monoidal)-import Pandora.Pattern.Transformer.Liftable (lift)-import Pandora.Pattern.Transformer.Lowerable (lower)-import Pandora.Paradigm.Algebraic.Exponential (type (-->), (%))-import Pandora.Paradigm.Algebraic.Product ((:*:) ((:*:)), type (<:*:>), (<:*:>))-import Pandora.Paradigm.Algebraic.Functor ((<-*--), extract, point, void)+import Pandora.Pattern.Transformation.Liftable (lift)+import Pandora.Pattern.Transformation.Lowerable (lower)+import Pandora.Pattern.Operation.Exponential (type (-->), (%))+import Pandora.Pattern.Operation.Product ((:*:) ((:*:)), attached)+import Pandora.Paradigm.Algebraic.Functor ((<-*--), (-+), extract, void, until)+import Pandora.Paradigm.Algebraic (type (<:*:>), (<:*:>)) import Pandora.Paradigm.Schemes.TT (TT (TT), type (<::>)) import Pandora.Paradigm.Schemes.T_U (T_U (T_U))+import Pandora.Paradigm.Schemes.TUT (TUT (TUT)) import Pandora.Paradigm.Schemes.P_Q_T (P_Q_T (P_Q_T)) import Pandora.Paradigm.Primary.Auxiliary (Vertical (Up, Down), Horizontal (Left, Right)) import Pandora.Paradigm.Primary.Functor.Exactly (Exactly (Exactly))+import Pandora.Paradigm.Primary.Functor.Maybe (Maybe (Just)) import Pandora.Paradigm.Primary.Transformer.Reverse (Reverse (Reverse))-import Pandora.Paradigm.Controlflow.Effect.Adaptable (adapt)-import Pandora.Paradigm.Controlflow.Effect.Transformer ((:>), wrap)+import Pandora.Paradigm.Controlflow.Effect.Transformer ((:>) (TM), wrap) import Pandora.Paradigm.Structure.Ability.Morphable (Occurrence (All))-import Pandora.Paradigm.Structure.Ability.Substructure (Substructure (Substance, substructure), Segment (Root, Branch, Rest), sub)+import Pandora.Paradigm.Structure.Ability.Substructure (Substructure (Substance, substructure), Segment (Root, Rest), sub) import Pandora.Paradigm.Structure.Ability.Slidable (Slidable (Sliding, slide)) import Pandora.Paradigm.Structure.Interface.Stack (Stack (Topping, push, pop))+import Pandora.Paradigm.Structure.Modification.Turnover (Turnover (Turnover)) import Pandora.Paradigm.Inventory.Some.State (State, change) import Pandora.Paradigm.Inventory.Some.Store (Store (Store)) import Pandora.Paradigm.Inventory.Some.Optics (view, replace, mutate, transwrap)@@ -91,3 +93,18 @@ 			====<< wrap . zoom @(Tape structure e) (sub @Root) . overlook . change . constant 				====<< lift ====<< wrap <---- zoom @(Tape structure e) <--- sub @Rest 					<--- zoom <-- sub @Left <-- zoom transwrap pop++-- TODO: generalize this instance over direction, but for this we need a defintion of opposite derection+instance (Covariant (->) (->) structure, Stack structure, Topping structure ~ Maybe) => Slidable Left (Turnover > Tape structure) where+	type Sliding Left (Turnover > Tape structure) = Exactly+	slide :: forall e . State (Turnover < Tape structure < e) :> Exactly >>> ()+	slide = TM . TUT <-- \(Turnover tape) ->+		let Just updated = attached <-|- slide @Left -+ until (slide @Right) <~~ tape in+		Exactly <--- Turnover updated :*: ()++instance (Covariant (->) (->) structure, Stack structure, Topping structure ~ Maybe) => Slidable Right (Turnover > Tape structure) where+	type Sliding Right (Turnover > Tape structure) = Exactly+	slide :: forall e . State (Turnover < Tape structure < e) :> Exactly >>> ()+	slide = TM . TUT <-- \(Turnover tape) ->+		let Just updated = attached <-|- slide @Right -+ until (slide @Left) <~~ tape in+		Exactly <--- Turnover updated :*: ()
Pandora/Paradigm/Structure/Modification/Turnover.hs view
@@ -3,8 +3,8 @@  import Pandora.Core.Interpreted (Interpreted (Primary, run, unite, (=#-))) import Pandora.Pattern.Functor.Covariant (Covariant ((<-|-)))-import Pandora.Pattern.Transformer.Hoistable ((/|\))-import Pandora.Paradigm.Algebraic.Product ((:*:) ((:*:)))+import Pandora.Pattern.Transformation.Hoistable ((/|\))+import Pandora.Pattern.Operation.Product ((:*:) ((:*:))) import Pandora.Paradigm.Algebraic ((>-|-<-|-)) import Pandora.Paradigm.Structure.Ability.Substructure (Substructure (Substance, substructure)) 
Pandora/Paradigm/Structure/Some/Binary.hs view
@@ -9,11 +9,12 @@ import Pandora.Pattern.Functor.Covariant (Covariant ((<-|-), (<-|---))) import Pandora.Pattern.Functor.Traversable (Traversable ((<-/-))) import Pandora.Pattern.Functor.Bindable (Bindable ((=<<), (==<<), (=====<<)))-import Pandora.Pattern.Transformer.Liftable (lift)-import Pandora.Pattern.Transformer.Lowerable (lower)+import Pandora.Pattern.Transformation.Liftable (lift)+import Pandora.Pattern.Transformation.Lowerable (lower) import Pandora.Pattern.Object.Chain (Chain ((<=>)))-import Pandora.Paradigm.Algebraic.Product ((:*:) ((:*:)), type (<:*:>), (<:*:>), attached)-import Pandora.Paradigm.Algebraic.Exponential ((&), (.:..))+import Pandora.Pattern.Operation.Product ((:*:) ((:*:)), attached)+import Pandora.Paradigm.Algebraic (type (<:*:>), (<:*:>))+import Pandora.Pattern.Operation.Exponential ((&), (.:..)) import Pandora.Paradigm.Algebraic.Functor ((<-*---), (-------*), extract, empty, void) import Pandora.Paradigm.Primary.Auxiliary (Vertical (Up, Down), Horizontal (Left, Right)) import Pandora.Paradigm.Primary.Object.Ordering (order)
Pandora/Paradigm/Structure/Some/List.hs view
@@ -1,7 +1,7 @@ {-# OPTIONS_GHC -fno-warn-orphans #-} module Pandora.Paradigm.Structure.Some.List where -import Pandora.Core.Functor (type (:.), type (<), type (>), type (>>>), type (>>>>>>))+import Pandora.Core.Functor (type (<), type (>), type (>>>>>>)) import Pandora.Core.Impliable (imply) import Pandora.Core.Interpreted (run, (<~), (<~~~), (=#-)) import Pandora.Pattern.Semigroupoid ((.))@@ -10,14 +10,15 @@ import Pandora.Pattern.Functor.Covariant (Covariant, Covariant ((<-|-), (<-|--))) import Pandora.Pattern.Functor.Traversable (Traversable ((<-/-))) import Pandora.Pattern.Functor.Bindable (Bindable ((=<<), (==<<), (===<<)))-import Pandora.Pattern.Transformer.Liftable (lift)-import Pandora.Pattern.Transformer.Lowerable (lower)+import Pandora.Pattern.Transformation.Liftable (lift)+import Pandora.Pattern.Transformation.Lowerable (lower) import Pandora.Pattern.Object.Setoid (Setoid ((==), (?=))) import Pandora.Pattern.Object.Semigroup (Semigroup ((+))) import Pandora.Pattern.Object.Monoid (Monoid (zero))-import Pandora.Paradigm.Algebraic ((<-*--), (-*), (-+), (.:..), extract, point, empty, void)-import Pandora.Paradigm.Algebraic.Product ((:*:) ((:*:)), type (<:*:>), (<:*:>), attached)-import Pandora.Paradigm.Algebraic.Exponential ((%))+import Pandora.Paradigm.Algebraic ((<-*--), (-*), (-+), extract, point, empty, void)+import Pandora.Pattern.Operation.Product ((:*:) ((:*:)), attached)+import Pandora.Paradigm.Algebraic (type (<:*:>), (<:*:>))+import Pandora.Pattern.Operation.Exponential ((.:..), (%)) import Pandora.Paradigm.Primary.Auxiliary (Horizontal (Left, Right)) import Pandora.Paradigm.Primary.Object.Boolean (Boolean (True)) import Pandora.Paradigm.Primary.Functor.Maybe (Maybe (Just, Nothing))
Pandora/Paradigm/Structure/Some/Rose.hs view
@@ -10,12 +10,13 @@ import Pandora.Pattern.Functor.Contravariant ((>-|-)) import Pandora.Pattern.Functor.Traversable ((<-/-)) import Pandora.Pattern.Functor.Bindable (Bindable ((=<<), (====<<), (=====<<), (======<<)))-import Pandora.Pattern.Transformer.Liftable (lift)-import Pandora.Pattern.Transformer.Lowerable (lower)+import Pandora.Pattern.Transformation.Liftable (lift)+import Pandora.Pattern.Transformation.Lowerable (lower) import Pandora.Pattern.Object.Setoid (Setoid ((?=))) import Pandora.Pattern.Object.Semigroup ((+))-import Pandora.Paradigm.Algebraic.Exponential ((%), (.:..))-import Pandora.Paradigm.Algebraic.Product ((:*:) ((:*:)), type (<:*:>), (<:*:>), attached)+import Pandora.Pattern.Operation.Exponential ((%), (.:..))+import Pandora.Pattern.Operation.Product ((:*:) ((:*:)), attached)+import Pandora.Paradigm.Algebraic (type (<:*:>), (<:*:>)) import Pandora.Paradigm.Algebraic.Functor ((<-*-), (<-*----), extract, point, empty, void) import Pandora.Paradigm.Primary.Auxiliary (Vertical (Up, Down), Horizontal (Left, Right)) import Pandora.Paradigm.Primary.Functor.Exactly (Exactly (Exactly))
Pandora/Paradigm/Structure/Some/Splay.hs view
@@ -9,10 +9,11 @@ import Pandora.Pattern.Category ((<--), (<---), (<----), identity) import Pandora.Pattern.Functor.Covariant (Covariant ((<-|-), (<-|---))) import Pandora.Pattern.Functor.Bindable (Bindable ((=<<), (==<<), (===<<)))-import Pandora.Pattern.Transformer.Liftable (lift)-import Pandora.Pattern.Transformer.Hoistable ((/|\))+import Pandora.Pattern.Transformation.Liftable (lift)+import Pandora.Pattern.Transformation.Hoistable ((/|\)) import Pandora.Paradigm.Algebraic.Functor ((<-*-), extract, point, void)-import Pandora.Paradigm.Algebraic.Product (type (<:*:>), (<:*:>), attached)+import Pandora.Pattern.Operation.Product (attached)+import Pandora.Paradigm.Algebraic (type (<:*:>), (<:*:>)) import Pandora.Paradigm.Primary.Auxiliary (Horizontal (Left, Right)) import Pandora.Paradigm.Primary.Functor.Maybe (Maybe (Just)) import Pandora.Paradigm.Primary.Transformer.Construction (Construction (Construct))
Pandora/Paradigm/Structure/Some/Stream.hs view
@@ -10,8 +10,9 @@ import Pandora.Pattern.Functor.Traversable (Traversable ((<-/-))) import Pandora.Pattern.Functor.Extendable (Extendable ((<<=))) import Pandora.Pattern.Functor.Bindable (Bindable ((=<<)))-import Pandora.Paradigm.Algebraic.Product ((:*:) ((:*:)), type (<:*:>), (<:*:>))+import Pandora.Pattern.Operation.Product ((:*:) ((:*:))) import Pandora.Paradigm.Algebraic.Functor (extract, empty, (-*))+import Pandora.Paradigm.Algebraic (type (<:*:>), (<:*:>)) import Pandora.Paradigm.Primary.Auxiliary (Horizontal (Left, Right)) import Pandora.Paradigm.Primary.Functor.Exactly (Exactly (Exactly)) import Pandora.Paradigm.Primary.Functor.Maybe (Maybe (Just))
Pandora/Pattern.hs view
@@ -1,11 +1,17 @@+-- {-# LANGUAGE UndecidableInstances #-} module Pandora.Pattern (module Exports) where  import Pandora.Pattern.Betwixt as Exports+import Pandora.Pattern.Operation as Exports import Pandora.Pattern.Object as Exports-import Pandora.Pattern.Transformer as Exports+import Pandora.Pattern.Transformation as Exports import Pandora.Pattern.Functor as Exports import Pandora.Pattern.Morphism as Exports import Pandora.Pattern.Groupoid as Exports import Pandora.Pattern.Kernel as Exports import Pandora.Pattern.Category as Exports import Pandora.Pattern.Semigroupoid as Exports++-- TODO: Bindable -> Bindable_+instance (Semigroupoid source, Bindable source t) => Semigroupoid (Kleisli t source) where+	Kleisli g . Kleisli f = Kleisli ((=<<) g . f)
Pandora/Pattern/Functor.hs view
@@ -1,4 +1,4 @@-module Pandora.Pattern.Functor (module Exports) where+module Pandora.Pattern.Functor (module Exports, Functor (..), Covariant_, Contravariant_, Bindable_) where  import Pandora.Pattern.Functor.Comonad as Exports import Pandora.Pattern.Functor.Monad as Exports@@ -14,8 +14,15 @@ import Pandora.Pattern.Functor.Contravariant as Exports import Pandora.Pattern.Functor.Covariant as Exports ---type family Endofunctor constraint functor category where-	--Endofunctor Covariant t category = Covariant category category t-	--Endofunctor Contravariant t category = Contravariant t category category-	--Endofunctor Traversable t category = Traversable t category category-	--Endofunctor Distributive t category = Distributive t category category+import Pandora.Pattern.Morphism.Flip (Flip)+import Pandora.Pattern.Morphism.Straight (Straight)+import Pandora.Pattern.Morphism.Kleisli (Kleisli)++-- TODO: think about prerequisites on morphisms+-- Semifunctors from Semigroupoids and Functors from Categories?+class Functor source target t where+	(-|-) :: source a b -> target (t a) (t b)++type Covariant_ source target = Functor (Straight source) (Straight target)+type Contravariant_ source target = Functor (Straight source) (Flip target)+type Bindable_ source t = Functor (Kleisli t source) (Straight source) t
Pandora/Pattern/Functor/Comonad.hs view
@@ -3,8 +3,8 @@ import Pandora.Pattern.Morphism.Straight (Straight) import Pandora.Pattern.Functor.Monoidal (Monoidal) import Pandora.Pattern.Functor.Extendable (Extendable)-import Pandora.Paradigm.Algebraic.Exponential (type (<--))-import Pandora.Paradigm.Algebraic.Product ((:*:))+import Pandora.Pattern.Operation.Exponential (type (--<))+import Pandora.Pattern.Operation.Product ((:*:))  {- | > Let f :: (Extendable t, Extractable t) => t a -> b@@ -16,4 +16,4 @@ > * Associativity: extend f . extend g ≡ extend (f . extend g) -} -class (Monoidal (<--) (Straight source) (:*:) (:*:) t, Extendable source t) => Comonad source t+class (Monoidal (--<) (Straight source) (:*:) (:*:) t, Extendable source t) => Comonad source t
Pandora/Pattern/Functor/Covariant.hs view
@@ -20,6 +20,7 @@ class (Semigroupoid source, Semigroupoid target) => Covariant source target t where 	(<-|-) :: source a b -> target (t a) (t b) +	-- TODO: remove those operators that are longer than 9 symbols 	(<-|--), (<-|---), (<-|----), (<-|-----), (<-|------), 		(<-|-------), (<-|--------) :: source a b -> target (t a) (t b) 	(<-|--) = (<-|-)@@ -30,6 +31,7 @@ 	(<-|-------) = (<-|-) 	(<-|--------) = (<-|-) +	-- TODO: remove those operators that are longer than 9 symbols 	(<-|-|-), (<-|-|--), (<-|-|---), (<-|-|----), (<-|-|-----), (<-|-|------), (<-|-|-------) :: (Covariant source (Betwixt source target) u, Covariant (Betwixt source target) target t) 		=> source a b -> target (t (u a)) (t (u b)) 	(<-|-|-------) s = ((<-|-) ((<-|-) @source @(Betwixt source target) @_ s))
Pandora/Pattern/Functor/Monad.hs view
@@ -4,7 +4,7 @@ import Pandora.Pattern.Functor.Covariant (Covariant) import Pandora.Pattern.Functor.Bindable (Bindable) import Pandora.Pattern.Functor.Monoidal (Monoidal)-import Pandora.Paradigm.Algebraic.Product ((:*:))+import Pandora.Pattern.Operation.Product ((:*:))  {- | > Let f :: (Monoidal t (->) (->) (:*:) (:*:), Bindable t) => a -> t a
Pandora/Pattern/Functor/Monoidal.hs view
@@ -1,9 +1,8 @@ module Pandora.Pattern.Functor.Monoidal where  import Pandora.Pattern.Functor.Semimonoidal (Semimonoidal)+import Pandora.Pattern.Operation.Unit (Unit) import Pandora.Paradigm.Primary.Functor.Proxy (Proxy)--type family Unit (p :: * -> * -> *) = r | r -> p  class Semimonoidal p source target t => Monoidal p q source target t | p target -> source where 	unit :: Proxy source -> p (q (Unit target) a) (t a)
Pandora/Pattern/Functor/Traversable.hs view
@@ -3,7 +3,7 @@ import Pandora.Pattern.Functor.Covariant (Covariant) import Pandora.Pattern.Functor.Monoidal (Monoidal) import Pandora.Pattern.Morphism.Straight (Straight)-import Pandora.Paradigm.Algebraic.Product ((:*:))+import Pandora.Pattern.Operation.Product ((:*:))  {- | > Let f :: (Applicative t, Applicative g) => t a -> u a
Pandora/Pattern/Morphism.hs view
@@ -2,6 +2,8 @@  import Pandora.Pattern.Morphism.Trip as Exports import Pandora.Pattern.Morphism.Flip as Exports+import Pandora.Pattern.Morphism.Tensor as Exports+import Pandora.Pattern.Morphism.Kleisli as Exports import Pandora.Pattern.Morphism.Straight as Exports  type family Opposite m where
+ Pandora/Pattern/Morphism/Kleisli.hs view
@@ -0,0 +1,3 @@+module Pandora.Pattern.Morphism.Kleisli where++newtype Kleisli t (v :: * -> * -> *) a e = Kleisli (v a (t e))
Pandora/Pattern/Morphism/Straight.hs view
@@ -7,7 +7,7 @@ newtype Straight (v :: * -> * -> *) a e = Straight (v a e)  instance Semigroupoid m => Semigroupoid (Straight m) where-  Straight g . Straight f = Straight (g . f)+	Straight g . Straight f = Straight (g . f)  instance Category m => Category (Straight m) where 	identity = Straight identity
+ Pandora/Pattern/Morphism/Tensor.hs view
@@ -0,0 +1,4 @@+module Pandora.Pattern.Morphism.Tensor where++data Tensor p m q l r where+	Tensor :: m (p (t l) (t r)) (t (q l r)) -> Tensor p m q (t l) (t r) 
+ Pandora/Pattern/Operation.hs view
@@ -0,0 +1,11 @@+module Pandora.Pattern.Operation (module Exports) where++import Pandora.Pattern.Operation.Zero as Exports+import Pandora.Pattern.Operation.One as Exports+import Pandora.Pattern.Operation.Unit as Exports+import Pandora.Pattern.Operation.Sum as Exports+import Pandora.Pattern.Operation.Product as Exports+import Pandora.Pattern.Operation.Exponential as Exports++type instance Unit (:*:) = One+type instance Unit (:+:) = Zero
+ Pandora/Pattern/Operation/Exponential.hs view
@@ -0,0 +1,69 @@+{-# OPTIONS_GHC -fno-warn-orphans #-}+module Pandora.Pattern.Operation.Exponential where++import Pandora.Pattern.Betwixt (Betwixt)+import Pandora.Pattern.Semigroupoid (Semigroupoid ((.)))+import Pandora.Pattern.Category (Category ((<--), identity))+import Pandora.Pattern.Kernel (Kernel (constant))+import Pandora.Pattern.Functor.Covariant (Covariant ((<-|-)))+import Pandora.Pattern.Functor.Contravariant (Contravariant ((>-|-)))+import Pandora.Pattern.Functor.Distributive (Distributive ((-<<)))+import Pandora.Pattern.Functor.Bindable (Bindable ((=<<)))+import Pandora.Pattern.Object.Semigroup (Semigroup ((+)))+import Pandora.Pattern.Object.Ringoid (Ringoid ((*)))+import Pandora.Pattern.Morphism.Flip (Flip (Flip))+import Pandora.Pattern.Morphism.Straight (Straight (Straight))++infixr 7 .:..+infixr 9 %+infixl 1 &++type instance Betwixt (->) (->) = (->)++instance Semigroupoid (->) where+	f . g = \x -> f (g x)++instance Category (->) where+	identity x = x++instance Kernel (->) where+	constant x _ = x++instance Covariant (->) (->) ((->) a) where+	(<-|-) = (.)++instance Distributive (->) (->) ((->) e) where+	f -<< g = \e -> f % e <-|- g++instance Bindable (->) ((->) e) where+	f =<< g = \x -> f <-- g x <-- x++instance Semigroup r => Semigroup (e -> r) where+	f + g = \e -> f e + g e++instance Ringoid r => Ringoid (e -> r) where+	f * g = \e -> f e * g e++type (--<) = Flip (->)++instance Contravariant (->) (->) ((--<) a) where+	f >-|- Flip g = Flip <-- g . f++type (-->) = Straight (->)++instance Covariant (->) (->) ((-->) b) where+	f <-|- Straight g = Straight <-- f . g++(.:..) :: (Covariant (->) target (v a), Semigroupoid v) => v c d -> target (v a (v b c)) (v a (v b d))+(.:..) f = (<-|-) (f .)++{-# INLINE (%) #-}+(%) :: (a -> b -> c) -> b -> a -> c+(%) f x y = f y x++{-# INLINE (&) #-}+(&) :: a -> (a -> b) -> b+x & f = f x++fix :: (a -> a) -> a+fix f = let x = f x in x
+ Pandora/Pattern/Operation/One.hs view
@@ -0,0 +1,3 @@+module Pandora.Pattern.Operation.One where++data One = One
+ Pandora/Pattern/Operation/Product.hs view
@@ -0,0 +1,69 @@+module Pandora.Pattern.Operation.Product where++import Pandora.Pattern.Category ((<---))+import Pandora.Pattern.Functor.Covariant (Covariant ((<-|-)))+import Pandora.Pattern.Functor.Extendable (Extendable ((<<=)))+import Pandora.Pattern.Object.Setoid (Setoid ((==)))+import Pandora.Pattern.Object.Semigroup (Semigroup ((+)))+import Pandora.Pattern.Object.Monoid (Monoid (zero))+import Pandora.Pattern.Object.Ringoid (Ringoid ((*)))+import Pandora.Pattern.Object.Quasiring (Quasiring (one))+import Pandora.Pattern.Object.Semilattice (Infimum ((/\)), Supremum ((\/)))+import Pandora.Pattern.Object.Lattice (Lattice)+import Pandora.Pattern.Object.Group (Group (invert))+import Pandora.Pattern.Operation.Exponential ()+import Pandora.Pattern.Operation.Unit (Unit)+import Pandora.Pattern.Operation.One (One)+import Pandora.Pattern.Morphism.Flip (Flip (Flip))++infixr 7 :*:++-- TODO Define :*:*:, :*:*:*:, ...++data (:*:) s a = s :*: a++type instance Unit (:*:) = One++instance Covariant (->) (->) ((:*:) s) where+	f <-|- ~(s :*: x) = s :*: f x++instance Covariant (->) (->) (Flip (:*:) a) where+	f <-|- Flip (x :*: y) = Flip (f x :*: y)++instance Extendable (->) ((:*:) s) where+	f <<= ~(s :*: x) = s :*: f (s :*: x)++instance (Setoid s, Setoid a) => Setoid (s :*: a) where+	~(sx :*: x) == ~(sy :*: y) = (sx == sy) * (x == y)++instance (Semigroup s, Semigroup a) => Semigroup (s :*: a) where+	~(sx :*: x) + ~(sy :*: y) = (sx + sy) :*: (x + y)++instance (Monoid s, Monoid a) => Monoid (s :*: a) where+	zero = zero :*: zero++instance (Ringoid s, Ringoid a) => Ringoid (s :*: a) where+	~(sx :*: x) * ~(sy :*: y) = (sx * sy) :*: (x * y)++instance (Quasiring s, Quasiring a) => Quasiring (s :*: a) where+	one = one :*: one++instance (Infimum s, Infimum a) => Infimum (s :*: a) where+	~(sx :*: x) /\ ~(sy :*: y) = sx /\ sy :*: x /\ y++instance (Supremum s, Supremum a) => Supremum (s :*: a) where+	~(sx :*: x) \/ ~(sy :*: y) = sx \/ sy :*: x \/ y++instance (Lattice s, Lattice a) => Lattice (s :*: a) where++instance (Group s, Group a) => Group (s :*: a) where+	invert ~(s :*: x) = invert s :*: invert x++delta :: a -> a :*: a+delta x = x :*: x++swap :: a :*: b -> b :*: a+swap ~(x :*: y) = y :*: x++attached :: a :*: b -> a+attached ~(x :*: _) = x
+ Pandora/Pattern/Operation/Sum.hs view
@@ -0,0 +1,32 @@+module Pandora.Pattern.Operation.Sum where++import Pandora.Pattern.Semigroupoid ((.))+import Pandora.Pattern.Category ((<--))+import Pandora.Pattern.Functor.Covariant (Covariant ((<-|-)))+import Pandora.Pattern.Operation.Exponential ()+import Pandora.Pattern.Operation.Unit (Unit)+import Pandora.Pattern.Operation.Zero (Zero)+import Pandora.Pattern.Morphism.Flip (Flip (Flip))++infixr 7 :+:++data (:+:) o a = Option o | Adoption a++type instance Unit (:+:) = Zero++instance Covariant (->) (->) ((:+:) o) where+	_ <-|- Option s = Option s+	f <-|- Adoption x = Adoption <-- f x++instance Covariant (->) (->) (Flip (:+:) a) where+	_ <-|- Flip (Adoption x) = Flip . Adoption <-- x+	f <-|- Flip (Option y) = Flip . Option <-- f y++sum :: (e -> r) -> (a -> r) -> e :+: a -> r+sum f _ (Option x) = f x+sum _ s (Adoption x) = s x++-- TODO: keep it until we realize how to implement n-ary functors+bitraverse_sum :: Covariant (->) (->) t => (e -> t e') -> (a -> t a') -> (e :+: a) -> t (e' :+: a')+bitraverse_sum f _ (Option x) = Option <-|- f x+bitraverse_sum _ g (Adoption x) = Adoption <-|- g x
+ Pandora/Pattern/Operation/Zero.hs view
@@ -0,0 +1,7 @@+{-# LANGUAGE EmptyCase #-}+module Pandora.Pattern.Operation.Zero where++data Zero++absurd :: Zero -> a+absurd x = case x of {}
+ Pandora/Pattern/Transformation.hs view
@@ -0,0 +1,28 @@+module Pandora.Pattern.Transformation (module Exports, Component (..), Transformation (..)) where++import Pandora.Pattern.Transformation.Lowerable as Exports+import Pandora.Pattern.Transformation.Liftable as Exports+import Pandora.Pattern.Transformation.Hoistable as Exports++import Pandora.Pattern.Morphism.Tensor (Tensor)+import Pandora.Pattern.Functor (Functor)++-- TODO: Category/Semigroupoid and Functor constrants+class Component category t u where+	component :: category (t a) (u a)++type Semimonoidal_ category p q t = Component (Tensor p category q) t t+-- TODO: Monoidal category p q t =+type Liftable_ category u t = Component category u (t u)+type Lowerable_ category t u = Component category (t u) u++lift_ :: Liftable_ category u t => category (u a) (t u a)+lift_ = component++lower_ :: Lowerable_ category t u => category (t u a) (u a)+lower_ = component++-- Law: (-|-) morphism . component = component . (-|-) morphism+-- TODO: natural transformations on semigroupoids?+class (Functor source target t, Functor source target u) => Transformation source target t u where+	(|-|) :: source a b -> target (t a) (u b)
+ Pandora/Pattern/Transformation/Hoistable.hs view
@@ -0,0 +1,15 @@+module Pandora.Pattern.Transformation.Hoistable (Hoistable (..)) where++import Pandora.Pattern.Functor.Covariant (Covariant)++{- |+> When providing a new instance, you should ensure it satisfies one law:+> * Exactly morphism: (identity /|\) ≡ identity+> * Interpreted of morphisms: (f . g /|\) ≡ (f /|\) . (g /|\)+-}++infixr 5 /|\++class Hoistable m t where+	{-# MINIMAL (/|\) #-}+	(/|\) :: Covariant m m u => (forall a . m (u a) (v a)) -> (forall a . m (t u a) (t v a))
+ Pandora/Pattern/Transformation/Liftable.hs view
@@ -0,0 +1,11 @@+module Pandora.Pattern.Transformation.Liftable (Liftable (..)) where++import Pandora.Pattern.Functor.Covariant (Covariant)++{- |+> When providing a new instance, you should ensure it satisfies one law:+> * Interchange: lift . point ≡ point+-}++class Liftable cat t where+	lift :: Covariant cat cat u => cat (u a) (t u a)
+ Pandora/Pattern/Transformation/Lowerable.hs view
@@ -0,0 +1,11 @@+module Pandora.Pattern.Transformation.Lowerable (Lowerable (..)) where++import Pandora.Pattern.Functor.Covariant (Covariant)++{- |+> When providing a new instance, you should ensure it satisfies one law:+> * Interchange: extract . lower ≡ extract+-}++class Lowerable cat t where+	lower :: Covariant cat cat u => cat (t u a) (u a)
− Pandora/Pattern/Transformer.hs
@@ -1,5 +0,0 @@-module Pandora.Pattern.Transformer (module Exports) where--import Pandora.Pattern.Transformer.Lowerable as Exports-import Pandora.Pattern.Transformer.Liftable as Exports-import Pandora.Pattern.Transformer.Hoistable as Exports
− Pandora/Pattern/Transformer/Hoistable.hs
@@ -1,15 +0,0 @@-module Pandora.Pattern.Transformer.Hoistable (Hoistable (..)) where--import Pandora.Pattern.Functor.Covariant (Covariant)--{- |-> When providing a new instance, you should ensure it satisfies one law:-> * Exactly morphism: (identity /|\) ≡ identity-> * Interpreted of morphisms: (f . g /|\) ≡ (f /|\) . (g /|\)--}--infixr 5 /|\--class Hoistable m t where-	{-# MINIMAL (/|\) #-}-	(/|\) :: Covariant m m u => (forall a . m (u a) (v a)) -> (forall a . m (t u a) (t v a))
− Pandora/Pattern/Transformer/Liftable.hs
@@ -1,11 +0,0 @@-module Pandora.Pattern.Transformer.Liftable (Liftable (..)) where--import Pandora.Pattern.Functor.Covariant (Covariant)--{- |-> When providing a new instance, you should ensure it satisfies one law:-> * Interchange: lift . point ≡ point--}--class Liftable cat t where-	lift :: Covariant cat cat u => cat (u a) (t u a)
− Pandora/Pattern/Transformer/Lowerable.hs
@@ -1,11 +0,0 @@-module Pandora.Pattern.Transformer.Lowerable (Lowerable (..)) where--import Pandora.Pattern.Functor.Covariant (Covariant)--{- |-> When providing a new instance, you should ensure it satisfies one law:-> * Interchange: extract . lower ≡ extract--}--class Lowerable cat t where-	lower :: Covariant cat cat u => cat (t u a) (u a)
pandora.cabal view
@@ -1,5 +1,5 @@ name:                pandora-version:             0.5.5+version:             0.5.6 synopsis:            A box of patterns and paradigms description:         Humble attempt to define a library for problem solving based on math abstractions. homepage:            https://github.com/iokasimov/pandora@@ -29,11 +29,6 @@     -- Basic constructions     Pandora.Paradigm.Algebraic     Pandora.Paradigm.Algebraic.Functor-    Pandora.Paradigm.Algebraic.Exponential-    Pandora.Paradigm.Algebraic.Product-    Pandora.Paradigm.Algebraic.Sum-    Pandora.Paradigm.Algebraic.Zero-    Pandora.Paradigm.Algebraic.One     Pandora.Paradigm.Primary     Pandora.Paradigm.Primary.Auxiliary     Pandora.Paradigm.Primary.Object@@ -145,6 +140,8 @@     -- Different morphisms     Pandora.Pattern.Morphism.Trip     Pandora.Pattern.Morphism.Flip+    Pandora.Pattern.Morphism.Tensor+    Pandora.Pattern.Morphism.Kleisli     Pandora.Pattern.Morphism.Straight     -- Algebra typeclasses     Pandora.Pattern.Semigroupoid@@ -181,11 +178,18 @@     Pandora.Pattern.Object.Ringoid     Pandora.Pattern.Object.Semilattice     Pandora.Pattern.Object.Semiring+    -- Typeclassess about object ops+    Pandora.Pattern.Operation+    Pandora.Pattern.Operation.One+    Pandora.Pattern.Operation.Zero+    Pandora.Pattern.Operation.Exponential+    Pandora.Pattern.Operation.Product+    Pandora.Pattern.Operation.Sum     -- Typeclassess about object composition of functors-    Pandora.Pattern.Transformer-    Pandora.Pattern.Transformer.Hoistable-    Pandora.Pattern.Transformer.Liftable-    Pandora.Pattern.Transformer.Lowerable+    Pandora.Pattern.Transformation+    Pandora.Pattern.Transformation.Hoistable+    Pandora.Pattern.Transformation.Liftable+    Pandora.Pattern.Transformation.Lowerable   default-extensions:     DataKinds, ConstraintKinds, ExistentialQuantification, GADTs, QuantifiedConstraints, InstanceSigs, StandaloneKindSignatures     FlexibleContexts, FlexibleInstances, KindSignatures, StandaloneKindSignatures, LiberalTypeSynonyms, LambdaCase, FunctionalDependencies