pandora 0.4.6 → 0.4.7
raw patch · 93 files changed
+898/−779 lines, 93 filesPVP: major bump suggested
API removals or changes: PVP suggests a major version bump
API changes (from Hackage documentation)
- Pandora.Paradigm.Controlflow.Effect.Transformer.Comonadic: instance (Pandora.Paradigm.Primary.Algebraic.Extractable_ (t Pandora.Paradigm.Controlflow.Effect.Transformer.Comonadic.:< u), Pandora.Pattern.Functor.Extendable.Extendable (->) (t Pandora.Paradigm.Controlflow.Effect.Transformer.Comonadic.:< u)) => Pandora.Pattern.Functor.Comonad.Comonad (t Pandora.Paradigm.Controlflow.Effect.Transformer.Comonadic.:< u) (->)
- Pandora.Paradigm.Controlflow.Effect.Transformer.Comonadic: instance Pandora.Paradigm.Controlflow.Effect.Interpreted.Interpreted (Pandora.Paradigm.Controlflow.Effect.Interpreted.Schematic Pandora.Pattern.Functor.Comonad.Comonad t u) => Pandora.Paradigm.Controlflow.Effect.Interpreted.Interpreted (t Pandora.Paradigm.Controlflow.Effect.Transformer.Comonadic.:< u)
- Pandora.Paradigm.Controlflow.Effect.Transformer.Comonadic: instance Pandora.Pattern.Functor.Monoidal.Monoidal (->) (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Controlflow.Effect.Interpreted.Schematic Pandora.Pattern.Functor.Comonad.Comonad t u) => Pandora.Pattern.Functor.Monoidal.Monoidal (->) (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (t Pandora.Paradigm.Controlflow.Effect.Transformer.Comonadic.:< u)
- Pandora.Paradigm.Controlflow.Effect.Transformer.Comonadic: instance Pandora.Pattern.Functor.Semimonoidal.Semimonoidal (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Controlflow.Effect.Interpreted.Schematic Pandora.Pattern.Functor.Comonad.Comonad t u) => Pandora.Pattern.Functor.Semimonoidal.Semimonoidal (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (t Pandora.Paradigm.Controlflow.Effect.Transformer.Comonadic.:< u)
- Pandora.Paradigm.Controlflow.Effect.Transformer.Monadic: instance (Pandora.Pattern.Functor.Covariant.Covariant (->) (->) (Pandora.Paradigm.Controlflow.Effect.Interpreted.Schematic Pandora.Pattern.Functor.Monad.Monad t u), Pandora.Pattern.Functor.Monoidal.Monoidal (->) (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Controlflow.Effect.Interpreted.Schematic Pandora.Pattern.Functor.Monad.Monad t u), Pandora.Pattern.Functor.Bindable.Bindable (->) (t Pandora.Paradigm.Controlflow.Effect.Transformer.Monadic.:> u)) => Pandora.Pattern.Functor.Monad.Monad (t Pandora.Paradigm.Controlflow.Effect.Transformer.Monadic.:> u)
- Pandora.Paradigm.Controlflow.Effect.Transformer.Monadic: instance Pandora.Paradigm.Controlflow.Effect.Interpreted.Interpreted (Pandora.Paradigm.Controlflow.Effect.Interpreted.Schematic Pandora.Pattern.Functor.Monad.Monad t u) => Pandora.Paradigm.Controlflow.Effect.Interpreted.Interpreted (t Pandora.Paradigm.Controlflow.Effect.Transformer.Monadic.:> u)
- Pandora.Paradigm.Controlflow.Effect.Transformer.Monadic: instance Pandora.Pattern.Functor.Monoidal.Monoidal (->) (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Controlflow.Effect.Interpreted.Schematic Pandora.Pattern.Functor.Monad.Monad t u) => Pandora.Pattern.Functor.Monoidal.Monoidal (->) (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (t Pandora.Paradigm.Controlflow.Effect.Transformer.Monadic.:> u)
- Pandora.Paradigm.Controlflow.Effect.Transformer.Monadic: instance Pandora.Pattern.Functor.Semimonoidal.Semimonoidal (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Controlflow.Effect.Interpreted.Schematic Pandora.Pattern.Functor.Monad.Monad t u) => Pandora.Pattern.Functor.Semimonoidal.Semimonoidal (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (t Pandora.Paradigm.Controlflow.Effect.Transformer.Monadic.:> u)
- Pandora.Paradigm.Controlflow.Pipeline: instance Pandora.Paradigm.Controlflow.Effect.Interpreted.Interpreted (Pandora.Paradigm.Controlflow.Pipeline.Consumer o t)
- Pandora.Paradigm.Controlflow.Pipeline: instance Pandora.Paradigm.Controlflow.Effect.Interpreted.Interpreted (Pandora.Paradigm.Controlflow.Pipeline.Producer i t)
- Pandora.Paradigm.Inventory.Accumulator: instance Pandora.Paradigm.Controlflow.Effect.Interpreted.Interpreted (Pandora.Paradigm.Inventory.Accumulator.Accumulator e)
- Pandora.Paradigm.Inventory.Accumulator: instance Pandora.Pattern.Object.Semigroup.Semigroup e => Pandora.Pattern.Functor.Semimonoidal.Semimonoidal (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Inventory.Accumulator.Accumulator e)
- Pandora.Paradigm.Inventory.Environment: instance Pandora.Paradigm.Controlflow.Effect.Interpreted.Interpreted (Pandora.Paradigm.Inventory.Environment.Environment e)
- Pandora.Paradigm.Inventory.Environment: instance Pandora.Pattern.Functor.Contravariant.Contravariant (->) (->) (Pandora.Paradigm.Primary.Transformer.Flip.Flip Pandora.Paradigm.Inventory.Environment.Environment a)
- Pandora.Paradigm.Inventory.Environment: instance Pandora.Pattern.Functor.Monoidal.Monoidal (->) (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Inventory.Environment.Environment e)
- Pandora.Paradigm.Inventory.Environment: instance Pandora.Pattern.Functor.Semimonoidal.Semimonoidal (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Inventory.Environment.Environment e)
- Pandora.Paradigm.Inventory.Equipment: instance Pandora.Paradigm.Controlflow.Effect.Interpreted.Interpreted (Pandora.Paradigm.Inventory.Equipment.Equipment e)
- Pandora.Paradigm.Inventory.Imprint: instance Pandora.Paradigm.Controlflow.Effect.Interpreted.Interpreted (Pandora.Paradigm.Inventory.Imprint.Imprint e)
- Pandora.Paradigm.Inventory.Imprint: instance Pandora.Pattern.Functor.Contravariant.Contravariant (->) (->) (Pandora.Paradigm.Primary.Transformer.Flip.Flip Pandora.Paradigm.Inventory.Imprint.Imprint a)
- Pandora.Paradigm.Inventory.Optics: instance Pandora.Pattern.Functor.Invariant.Invariant (Pandora.Paradigm.Primary.Transformer.Flip.Flip (Pandora.Paradigm.Inventory.Optics.Lens available) tgt)
- Pandora.Paradigm.Inventory.State: instance Pandora.Paradigm.Controlflow.Effect.Interpreted.Interpreted (Pandora.Paradigm.Inventory.State.State s)
- Pandora.Paradigm.Inventory.State: instance Pandora.Pattern.Functor.Invariant.Invariant (Pandora.Paradigm.Primary.Transformer.Flip.Flip Pandora.Paradigm.Inventory.State.State r)
- Pandora.Paradigm.Inventory.State: instance Pandora.Pattern.Functor.Monad.Monad (Pandora.Paradigm.Inventory.State.State s)
- Pandora.Paradigm.Inventory.State: instance Pandora.Pattern.Functor.Monoidal.Monoidal (->) (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Inventory.State.State s)
- Pandora.Paradigm.Inventory.State: instance Pandora.Pattern.Functor.Semimonoidal.Semimonoidal (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Inventory.State.State s)
- Pandora.Paradigm.Inventory.Store: instance Pandora.Paradigm.Controlflow.Effect.Interpreted.Interpreted (Pandora.Paradigm.Inventory.Store.Store s)
- Pandora.Paradigm.Inventory.Store: instance Pandora.Pattern.Functor.Comonad.Comonad (Pandora.Paradigm.Inventory.Store.Store s) (->)
- Pandora.Paradigm.Inventory.Store: instance Pandora.Pattern.Functor.Invariant.Invariant (Pandora.Paradigm.Primary.Transformer.Flip.Flip Pandora.Paradigm.Inventory.Store.Store r)
- Pandora.Paradigm.Primary: instance Pandora.Paradigm.Structure.Ability.Morphable.Morphable ('Pandora.Paradigm.Structure.Ability.Morphable.Into ('Pandora.Paradigm.Primary.Functor.These.That Pandora.Paradigm.Primary.Functor.Maybe.Maybe)) (Pandora.Paradigm.Primary.Transformer.Flip.Flip Pandora.Paradigm.Primary.Functor.These.These a2)
- Pandora.Paradigm.Primary: instance Pandora.Paradigm.Structure.Ability.Morphable.Morphable ('Pandora.Paradigm.Structure.Ability.Morphable.Into ('Pandora.Paradigm.Primary.Functor.Wedge.Here Pandora.Paradigm.Primary.Functor.Maybe.Maybe)) (Pandora.Paradigm.Primary.Transformer.Flip.Flip Pandora.Paradigm.Primary.Functor.Wedge.Wedge a2)
- Pandora.Paradigm.Primary: instance Pandora.Paradigm.Structure.Ability.Morphable.Morphable ('Pandora.Paradigm.Structure.Ability.Morphable.Into (Pandora.Paradigm.Primary.Transformer.Flip.Flip Pandora.Paradigm.Primary.Functor.Conclusion.Conclusion e)) Pandora.Paradigm.Primary.Functor.Maybe.Maybe
- Pandora.Paradigm.Primary: instance Pandora.Pattern.Functor.Adjoint.Adjoint (->) (->) (Pandora.Paradigm.Primary.Transformer.Flip.Flip (Pandora.Paradigm.Primary.Algebraic.Product.:*:) s) ((->) s)
- Pandora.Paradigm.Primary.Algebraic: (-<*>-) :: (Covariant (->) (->) t, Semimonoidal (->) (:*:) (:*:) t) => t (a -> b) -> t a -> t b
- Pandora.Paradigm.Primary.Algebraic: instance Pandora.Pattern.Functor.Comonad.Comonad ((Pandora.Paradigm.Primary.Algebraic.Product.:*:) s) (->)
- Pandora.Paradigm.Primary.Algebraic: instance Pandora.Pattern.Functor.Monoidal.Monoidal (->) (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) ((Pandora.Paradigm.Primary.Algebraic.Sum.:+:) e)
- Pandora.Paradigm.Primary.Algebraic: instance Pandora.Pattern.Functor.Monoidal.Monoidal (Pandora.Paradigm.Primary.Algebraic.Exponential.<--) (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Transformer.Flip.Flip (Pandora.Paradigm.Primary.Algebraic.Product.:*:) a)
- Pandora.Paradigm.Primary.Algebraic: instance Pandora.Pattern.Functor.Semimonoidal.Semimonoidal (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) ((->) e)
- Pandora.Paradigm.Primary.Algebraic: instance Pandora.Pattern.Functor.Semimonoidal.Semimonoidal (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) ((Pandora.Paradigm.Primary.Algebraic.Sum.:+:) e)
- Pandora.Paradigm.Primary.Algebraic: instance Pandora.Pattern.Functor.Semimonoidal.Semimonoidal (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Sum.:+:) ((Pandora.Paradigm.Primary.Algebraic.Sum.:+:) e)
- Pandora.Paradigm.Primary.Algebraic: instance Pandora.Pattern.Functor.Semimonoidal.Semimonoidal (Pandora.Paradigm.Primary.Algebraic.Exponential.<--) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Transformer.Flip.Flip (Pandora.Paradigm.Primary.Algebraic.Product.:*:) a)
- Pandora.Paradigm.Primary.Algebraic: type Alternative_ t = (Covariant (->) (->) t, Semimonoidal (->) (:*:) (:+:) t, Monoidal (->) (->) (:*:) (:+:) t)
- Pandora.Paradigm.Primary.Algebraic: type Applicative_ t = (Covariant (->) (->) t, Semimonoidal (->) (:*:) (:*:) t, Monoidal (->) (->) (:*:) (:*:) t)
- Pandora.Paradigm.Primary.Algebraic: type Extractable_ t = Monoidal (<--) (->) (:*:) (:*:) t
- Pandora.Paradigm.Primary.Algebraic.Exponential: instance Pandora.Pattern.Category.Category (Pandora.Paradigm.Primary.Algebraic.Exponential.<--)
- Pandora.Paradigm.Primary.Algebraic.Exponential: instance Pandora.Pattern.Semigroupoid.Semigroupoid (Pandora.Paradigm.Primary.Algebraic.Exponential.<--)
- Pandora.Paradigm.Primary.Algebraic.Product: instance Pandora.Pattern.Functor.Covariant.Covariant (->) (->) (Pandora.Paradigm.Primary.Transformer.Flip.Flip (Pandora.Paradigm.Primary.Algebraic.Product.:*:) a)
- Pandora.Paradigm.Primary.Algebraic.Product: instance Pandora.Pattern.Functor.Semimonoidal.Semimonoidal (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) t => Pandora.Pattern.Functor.Semimonoidal.Semimonoidal (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) ((t Pandora.Paradigm.Schemes.T_U.<:.:> t) Pandora.Core.Functor.:= (Pandora.Paradigm.Primary.Algebraic.Product.:*:))
- Pandora.Paradigm.Primary.Algebraic.Sum: instance Pandora.Pattern.Functor.Covariant.Covariant (->) (->) (Pandora.Paradigm.Primary.Transformer.Flip.Flip (Pandora.Paradigm.Primary.Algebraic.Sum.:+:) a)
- Pandora.Paradigm.Primary.Functor.Conclusion: instance (Pandora.Pattern.Functor.Monoidal.Monoidal (->) (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) u, Pandora.Pattern.Functor.Bindable.Bindable (->) u) => Pandora.Paradigm.Primary.Functor.Conclusion.Catchable e (Pandora.Paradigm.Primary.Functor.Conclusion.Conclusion e Pandora.Paradigm.Schemes.UT.<.:> u)
- Pandora.Paradigm.Primary.Functor.Conclusion: instance Pandora.Paradigm.Controlflow.Effect.Interpreted.Interpreted (Pandora.Paradigm.Primary.Functor.Conclusion.Conclusion e)
- Pandora.Paradigm.Primary.Functor.Conclusion: instance Pandora.Pattern.Functor.Covariant.Covariant (->) (->) (Pandora.Paradigm.Primary.Transformer.Flip.Flip Pandora.Paradigm.Primary.Functor.Conclusion.Conclusion e)
- Pandora.Paradigm.Primary.Functor.Conclusion: instance Pandora.Pattern.Functor.Monoidal.Monoidal (->) (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Functor.Conclusion.Conclusion e)
- Pandora.Paradigm.Primary.Functor.Conclusion: instance Pandora.Pattern.Functor.Semimonoidal.Semimonoidal (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Functor.Conclusion.Conclusion e)
- Pandora.Paradigm.Primary.Functor.Conclusion: instance Pandora.Pattern.Object.Semigroup.Semigroup e => Pandora.Pattern.Functor.Semimonoidal.Semimonoidal (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Sum.:+:) (Pandora.Paradigm.Primary.Functor.Conclusion.Conclusion e)
- Pandora.Paradigm.Primary.Functor.Constant: instance Pandora.Pattern.Functor.Covariant.Covariant (->) (->) (Pandora.Paradigm.Primary.Transformer.Flip.Flip Pandora.Paradigm.Primary.Functor.Constant.Constant b)
- Pandora.Paradigm.Primary.Functor.Endo: instance Pandora.Paradigm.Controlflow.Effect.Interpreted.Interpreted Pandora.Paradigm.Primary.Functor.Endo.Endo
- Pandora.Paradigm.Primary.Functor.Identity: instance Pandora.Pattern.Functor.Comonad.Comonad Pandora.Paradigm.Primary.Functor.Identity.Identity (->)
- Pandora.Paradigm.Primary.Functor.Identity: instance Pandora.Pattern.Functor.Monad.Monad Pandora.Paradigm.Primary.Functor.Identity.Identity
- Pandora.Paradigm.Primary.Functor.Identity: instance Pandora.Pattern.Functor.Monoidal.Monoidal (->) (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) Pandora.Paradigm.Primary.Functor.Identity.Identity
- Pandora.Paradigm.Primary.Functor.Identity: instance Pandora.Pattern.Functor.Semimonoidal.Semimonoidal (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) Pandora.Paradigm.Primary.Functor.Identity.Identity
- Pandora.Paradigm.Primary.Functor.Maybe: instance Pandora.Paradigm.Controlflow.Effect.Interpreted.Interpreted Pandora.Paradigm.Primary.Functor.Maybe.Maybe
- Pandora.Paradigm.Primary.Functor.Maybe: instance Pandora.Pattern.Functor.Monoidal.Monoidal (->) (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) Pandora.Paradigm.Primary.Functor.Maybe.Maybe
- Pandora.Paradigm.Primary.Functor.Maybe: instance Pandora.Pattern.Functor.Monoidal.Monoidal (->) (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Sum.:+:) Pandora.Paradigm.Primary.Functor.Maybe.Maybe
- Pandora.Paradigm.Primary.Functor.Maybe: instance Pandora.Pattern.Functor.Semimonoidal.Semimonoidal (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) Pandora.Paradigm.Primary.Functor.Maybe.Maybe
- Pandora.Paradigm.Primary.Functor.Maybe: instance Pandora.Pattern.Functor.Semimonoidal.Semimonoidal (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Sum.:+:) Pandora.Paradigm.Primary.Functor.Maybe.Maybe
- Pandora.Paradigm.Primary.Functor.Predicate: instance Pandora.Paradigm.Controlflow.Effect.Interpreted.Interpreted Pandora.Paradigm.Primary.Functor.Predicate.Predicate
- Pandora.Paradigm.Primary.Functor.Tagged: instance Pandora.Pattern.Functor.Covariant.Covariant (->) (->) (Pandora.Paradigm.Primary.Transformer.Flip.Flip Pandora.Paradigm.Primary.Functor.Tagged.Tagged a)
- Pandora.Paradigm.Primary.Functor.Tagged: instance forall k (tag :: k). Pandora.Pattern.Functor.Comonad.Comonad (Pandora.Paradigm.Primary.Functor.Tagged.Tagged tag) (->)
- Pandora.Paradigm.Primary.Functor.Tagged: instance forall k (tag :: k). Pandora.Pattern.Functor.Monad.Monad (Pandora.Paradigm.Primary.Functor.Tagged.Tagged tag)
- Pandora.Paradigm.Primary.Functor.Tagged: instance forall k (tag :: k). Pandora.Pattern.Functor.Monoidal.Monoidal (->) (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Functor.Tagged.Tagged tag)
- Pandora.Paradigm.Primary.Functor.Tagged: instance forall k (tag :: k). Pandora.Pattern.Functor.Semimonoidal.Semimonoidal (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Functor.Tagged.Tagged tag)
- Pandora.Paradigm.Primary.Functor.Validation: instance Pandora.Pattern.Functor.Covariant.Covariant (->) (->) (Pandora.Paradigm.Primary.Transformer.Flip.Flip Pandora.Paradigm.Primary.Functor.Validation.Validation a)
- Pandora.Paradigm.Primary.Functor.Validation: instance Pandora.Pattern.Object.Semigroup.Semigroup e => Pandora.Pattern.Functor.Monoidal.Monoidal (->) (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Functor.Validation.Validation e)
- Pandora.Paradigm.Primary.Functor.Validation: instance Pandora.Pattern.Object.Semigroup.Semigroup e => Pandora.Pattern.Functor.Semimonoidal.Semimonoidal (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Functor.Validation.Validation e)
- Pandora.Paradigm.Primary.Functor.Validation: instance Pandora.Pattern.Object.Semigroup.Semigroup e => Pandora.Pattern.Functor.Semimonoidal.Semimonoidal (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Sum.:+:) (Pandora.Paradigm.Primary.Functor.Validation.Validation e)
- Pandora.Paradigm.Primary.Transformer: instance Pandora.Paradigm.Controlflow.Effect.Interpreted.Interpreted (Pandora.Paradigm.Primary.Transformer.Flip.Flip v a)
- Pandora.Paradigm.Primary.Transformer.Backwards: instance (Pandora.Pattern.Functor.Covariant.Covariant (->) (->) t, Pandora.Pattern.Functor.Monoidal.Monoidal (->) (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) t) => Pandora.Pattern.Functor.Monoidal.Monoidal (->) (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Transformer.Backwards.Backwards t)
- Pandora.Paradigm.Primary.Transformer.Backwards: instance (Pandora.Pattern.Functor.Semimonoidal.Semimonoidal (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) t, Pandora.Pattern.Functor.Covariant.Covariant (->) (->) t) => Pandora.Pattern.Functor.Semimonoidal.Semimonoidal (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Transformer.Backwards.Backwards t)
- Pandora.Paradigm.Primary.Transformer.Backwards: instance Pandora.Paradigm.Controlflow.Effect.Interpreted.Interpreted (Pandora.Paradigm.Primary.Transformer.Backwards.Backwards t)
- Pandora.Paradigm.Primary.Transformer.Construction: instance (Pandora.Pattern.Functor.Covariant.Covariant (->) (->) t, Pandora.Pattern.Functor.Semimonoidal.Semimonoidal (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) t) => Pandora.Pattern.Functor.Semimonoidal.Semimonoidal (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Transformer.Construction.Construction t)
- Pandora.Paradigm.Primary.Transformer.Construction: instance (Pandora.Pattern.Functor.Covariant.Covariant (->) (->) t, Pandora.Pattern.Functor.Semimonoidal.Semimonoidal (Pandora.Paradigm.Primary.Algebraic.Exponential.<--) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) t) => Pandora.Pattern.Functor.Comonad.Comonad (Pandora.Paradigm.Primary.Transformer.Construction.Construction t) (->)
- Pandora.Paradigm.Primary.Transformer.Continuation: instance forall k (r :: k) (t :: k -> *). Pandora.Paradigm.Controlflow.Effect.Interpreted.Interpreted (Pandora.Paradigm.Primary.Transformer.Continuation.Continuation r t)
- Pandora.Paradigm.Primary.Transformer.Flip: Flip :: v e a -> Flip (v :: * -> * -> *) a e
- Pandora.Paradigm.Primary.Transformer.Flip: newtype Flip (v :: * -> * -> *) a e
- Pandora.Paradigm.Primary.Transformer.Instruction: instance (Pandora.Pattern.Functor.Covariant.Covariant (->) (->) t, Pandora.Pattern.Functor.Semimonoidal.Semimonoidal (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) t) => Pandora.Pattern.Functor.Monoidal.Monoidal (->) (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Transformer.Instruction.Instruction t)
- Pandora.Paradigm.Primary.Transformer.Instruction: instance (Pandora.Pattern.Functor.Covariant.Covariant (->) (->) t, Pandora.Pattern.Functor.Semimonoidal.Semimonoidal (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) t) => Pandora.Pattern.Functor.Semimonoidal.Semimonoidal (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Transformer.Instruction.Instruction t)
- Pandora.Paradigm.Primary.Transformer.Instruction: instance (forall (t :: * -> *). Pandora.Pattern.Functor.Bindable.Bindable (->) t, forall (t :: * -> *). Pandora.Pattern.Functor.Monoidal.Monoidal (->) (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) t) => Pandora.Pattern.Transformer.Lowerable.Lowerable (->) Pandora.Paradigm.Primary.Transformer.Instruction.Instruction
- Pandora.Paradigm.Primary.Transformer.Instruction: instance Pandora.Pattern.Functor.Monad.Monad t => Pandora.Pattern.Functor.Monad.Monad (Pandora.Paradigm.Primary.Transformer.Instruction.Instruction t)
- Pandora.Paradigm.Primary.Transformer.Jack: instance (Pandora.Pattern.Functor.Monoidal.Monoidal (->) (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) t, Pandora.Pattern.Functor.Bindable.Bindable (->) t) => Pandora.Pattern.Functor.Bindable.Bindable (->) (Pandora.Paradigm.Primary.Transformer.Jack.Jack t)
- Pandora.Paradigm.Primary.Transformer.Kan: instance Pandora.Paradigm.Controlflow.Effect.Interpreted.Interpreted (Pandora.Paradigm.Primary.Transformer.Kan.Kan 'Pandora.Paradigm.Primary.Functor.Wye.Left t u b)
- Pandora.Paradigm.Primary.Transformer.Kan: instance Pandora.Paradigm.Controlflow.Effect.Interpreted.Interpreted (Pandora.Paradigm.Primary.Transformer.Kan.Kan 'Pandora.Paradigm.Primary.Functor.Wye.Right t u b)
- Pandora.Paradigm.Primary.Transformer.Reverse: instance (Pandora.Pattern.Functor.Covariant.Covariant (->) (->) t, Pandora.Pattern.Functor.Monoidal.Monoidal (->) (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) t) => Pandora.Pattern.Functor.Monoidal.Monoidal (->) (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Transformer.Reverse.Reverse t)
- Pandora.Paradigm.Primary.Transformer.Reverse: instance (Pandora.Pattern.Functor.Semimonoidal.Semimonoidal (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) t, Pandora.Pattern.Functor.Covariant.Covariant (->) (->) t) => Pandora.Pattern.Functor.Semimonoidal.Semimonoidal (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Transformer.Reverse.Reverse t)
- Pandora.Paradigm.Primary.Transformer.Reverse: instance Pandora.Paradigm.Controlflow.Effect.Interpreted.Interpreted (Pandora.Paradigm.Primary.Transformer.Reverse.Reverse t)
- Pandora.Paradigm.Primary.Transformer.Tap: instance Pandora.Pattern.Functor.Semimonoidal.Semimonoidal (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) t => Pandora.Pattern.Functor.Semimonoidal.Semimonoidal (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Transformer.Tap.Tap ((t Pandora.Paradigm.Schemes.T_U.<:.:> t) Pandora.Core.Functor.:= (Pandora.Paradigm.Primary.Algebraic.Product.:*:)))
- Pandora.Paradigm.Primary.Transformer.Tap: instance Pandora.Pattern.Functor.Semimonoidal.Semimonoidal (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) t => Pandora.Pattern.Functor.Semimonoidal.Semimonoidal (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Transformer.Tap.Tap t)
- Pandora.Paradigm.Schemes.PQ_: instance forall k1 k2 (p :: k1 -> k2 -> *) (q :: * -> k1 -> k2) (a :: k1). Pandora.Paradigm.Controlflow.Effect.Interpreted.Interpreted (Pandora.Paradigm.Schemes.PQ_.PQ_ p q a)
- Pandora.Paradigm.Schemes.PTU: instance forall k1 k2 k3 (p :: k1 -> k2 -> *) (t :: k3 -> k1) (u :: * -> k2) (a :: k3). Pandora.Paradigm.Controlflow.Effect.Interpreted.Interpreted (Pandora.Paradigm.Schemes.PTU.PTU p t u a)
- Pandora.Paradigm.Schemes.P_Q_T: instance Pandora.Paradigm.Controlflow.Effect.Interpreted.Interpreted (Pandora.Paradigm.Schemes.P_Q_T.P_Q_T p q t a)
- Pandora.Paradigm.Schemes.P_T: instance forall k1 k2 (p :: k1 -> * -> *) (t :: k2 -> k1) (a :: k2). Pandora.Paradigm.Controlflow.Effect.Interpreted.Interpreted (Pandora.Paradigm.Schemes.P_T.P_T p t a)
- Pandora.Paradigm.Schemes.TU: instance (Pandora.Pattern.Functor.Covariant.Covariant (->) (->) t, Pandora.Pattern.Functor.Covariant.Covariant (->) (->) u) => Pandora.Pattern.Functor.Covariant.Covariant (->) (->) (t Pandora.Paradigm.Schemes.TU.<:.> u)
- Pandora.Paradigm.Schemes.TU: instance (Pandora.Pattern.Functor.Covariant.Covariant (->) (->) t, Pandora.Pattern.Functor.Covariant.Covariant (->) (->) u, Pandora.Pattern.Functor.Monoidal.Monoidal (->) (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Sum.:+:) t) => Pandora.Pattern.Functor.Monoidal.Monoidal (->) (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Sum.:+:) (t Pandora.Paradigm.Schemes.TU.<:.> u)
- Pandora.Paradigm.Schemes.TU: instance (Pandora.Pattern.Functor.Covariant.Covariant (->) (->) t, Pandora.Pattern.Functor.Covariant.Covariant (->) (->) u, Pandora.Pattern.Functor.Semimonoidal.Semimonoidal (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) u, Pandora.Pattern.Functor.Monoidal.Monoidal (->) (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) t, Pandora.Pattern.Functor.Monoidal.Monoidal (->) (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) u) => Pandora.Pattern.Functor.Monoidal.Monoidal (->) (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (t Pandora.Paradigm.Schemes.TU.<:.> u)
- Pandora.Paradigm.Schemes.TU: instance (Pandora.Pattern.Functor.Covariant.Covariant (->) (->) t, Pandora.Pattern.Functor.Covariant.Covariant (->) (->) u, Pandora.Pattern.Functor.Semimonoidal.Semimonoidal (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Sum.:+:) t) => Pandora.Pattern.Functor.Semimonoidal.Semimonoidal (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Sum.:+:) (t Pandora.Paradigm.Schemes.TU.<:.> u)
- Pandora.Paradigm.Schemes.TU: instance (Pandora.Pattern.Functor.Covariant.Covariant (->) (->) t, Pandora.Pattern.Functor.Semimonoidal.Semimonoidal (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) t, Pandora.Pattern.Functor.Semimonoidal.Semimonoidal (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) u) => Pandora.Pattern.Functor.Semimonoidal.Semimonoidal (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (t Pandora.Paradigm.Schemes.TU.<:.> u)
- Pandora.Paradigm.Schemes.TU: instance Pandora.Pattern.Functor.Monoidal.Monoidal (->) (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) t => Pandora.Pattern.Transformer.Liftable.Liftable (->) (Pandora.Paradigm.Schemes.TU.TU Pandora.Pattern.Functor.Covariant.Covariant Pandora.Pattern.Functor.Covariant.Covariant t)
- Pandora.Paradigm.Schemes.TU: instance forall k1 k2 k3 (ct :: k1) (cu :: k2) (t :: k3 -> *) (u :: * -> k3). Pandora.Paradigm.Controlflow.Effect.Interpreted.Interpreted (Pandora.Paradigm.Schemes.TU.TU ct cu t u)
- Pandora.Paradigm.Schemes.TUT: instance (Pandora.Pattern.Functor.Covariant.Covariant (->) (->) t, Pandora.Pattern.Functor.Covariant.Covariant (->) (->) t', Pandora.Pattern.Functor.Covariant.Covariant (->) (->) u) => Pandora.Pattern.Functor.Covariant.Covariant (->) (->) ((t Pandora.Paradigm.Schemes.TUT.<:<.>:> t') Pandora.Core.Functor.:= u)
- Pandora.Paradigm.Schemes.TUT: instance (Pandora.Pattern.Functor.Covariant.Covariant (->) (->) t, Pandora.Pattern.Functor.Covariant.Covariant (->) (->) t', Pandora.Pattern.Functor.Covariant.Covariant (->) (->) u, Pandora.Pattern.Functor.Semimonoidal.Semimonoidal (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) t, Pandora.Pattern.Functor.Semimonoidal.Semimonoidal (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) u, Pandora.Pattern.Functor.Semimonoidal.Semimonoidal (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) t') => Pandora.Pattern.Functor.Semimonoidal.Semimonoidal (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) ((t Pandora.Paradigm.Schemes.TUT.<:<.>:> t') Pandora.Core.Functor.:= u)
- Pandora.Paradigm.Schemes.TUT: instance (Pandora.Pattern.Functor.Covariant.Covariant (->) (->) t, Pandora.Pattern.Functor.Covariant.Covariant (->) (->) u, Pandora.Pattern.Functor.Covariant.Covariant (->) (->) t', Pandora.Pattern.Functor.Semimonoidal.Semimonoidal (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) t, Pandora.Pattern.Functor.Semimonoidal.Semimonoidal (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) t', Pandora.Pattern.Functor.Monoidal.Monoidal (->) (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) u, Pandora.Pattern.Functor.Adjoint.Adjoint (->) (->) t' t) => Pandora.Pattern.Functor.Monoidal.Monoidal (->) (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) ((t Pandora.Paradigm.Schemes.TUT.<:<.>:> t') Pandora.Core.Functor.:= u)
- Pandora.Paradigm.Schemes.TUT: instance forall k1 k2 k3 k4 k5 (ct :: k1) (ct' :: k2) (cu :: k3) (t :: k4 -> *) (t' :: * -> k5) (u :: k5 -> k4). Pandora.Paradigm.Controlflow.Effect.Interpreted.Interpreted (Pandora.Paradigm.Schemes.TUT.TUT ct ct' cu t t' u)
- Pandora.Paradigm.Schemes.TUVW: instance forall k1 k2 k3 k4 k5 k6 k7 (ct :: k1) (cu :: k2) (cv :: k3) (cw :: k4) (t :: k5 -> *) (u :: k6 -> k5) (v :: k7 -> k6) (w :: * -> k7). Pandora.Paradigm.Controlflow.Effect.Interpreted.Interpreted (Pandora.Paradigm.Schemes.TUVW.TUVW ct cu cv cw t u v w)
- Pandora.Paradigm.Schemes.T_U: instance forall k1 k2 k3 k4 (ct :: k1) (cu :: k2) (p :: k3 -> k4 -> *) (t :: * -> k3) (u :: * -> k4). Pandora.Paradigm.Controlflow.Effect.Interpreted.Interpreted (Pandora.Paradigm.Schemes.T_U.T_U ct cu p t u)
- Pandora.Paradigm.Schemes.UT: instance (Pandora.Pattern.Functor.Covariant.Covariant (->) (->) t, Pandora.Pattern.Functor.Covariant.Covariant (->) (->) u) => Pandora.Pattern.Functor.Covariant.Covariant (->) (->) (t Pandora.Paradigm.Schemes.UT.<.:> u)
- Pandora.Paradigm.Schemes.UT: instance (Pandora.Pattern.Functor.Covariant.Covariant (->) (->) t, Pandora.Pattern.Functor.Covariant.Covariant (->) (->) u, Pandora.Pattern.Functor.Semimonoidal.Semimonoidal (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) u, Pandora.Pattern.Functor.Monoidal.Monoidal (->) (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) t, Pandora.Pattern.Functor.Monoidal.Monoidal (->) (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) u) => Pandora.Pattern.Functor.Monoidal.Monoidal (->) (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (t Pandora.Paradigm.Schemes.UT.<.:> u)
- Pandora.Paradigm.Schemes.UT: instance (Pandora.Pattern.Functor.Covariant.Covariant (->) (->) u, Pandora.Pattern.Functor.Semimonoidal.Semimonoidal (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) t, Pandora.Pattern.Functor.Semimonoidal.Semimonoidal (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) u) => Pandora.Pattern.Functor.Semimonoidal.Semimonoidal (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (t Pandora.Paradigm.Schemes.UT.<.:> u)
- Pandora.Paradigm.Schemes.UT: instance (Pandora.Pattern.Functor.Traversable.Traversable (->) (->) t, Pandora.Pattern.Functor.Bindable.Bindable (->) t, Pandora.Pattern.Functor.Semimonoidal.Semimonoidal (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) u, Pandora.Pattern.Functor.Monoidal.Monoidal (->) (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) u, Pandora.Pattern.Functor.Bindable.Bindable (->) u) => Pandora.Pattern.Functor.Bindable.Bindable (->) (t Pandora.Paradigm.Schemes.UT.<.:> u)
- Pandora.Paradigm.Schemes.UT: instance Pandora.Pattern.Functor.Monoidal.Monoidal (->) (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) t => Pandora.Pattern.Transformer.Liftable.Liftable (->) (Pandora.Paradigm.Schemes.UT.UT Pandora.Pattern.Functor.Covariant.Covariant Pandora.Pattern.Functor.Covariant.Covariant t)
- Pandora.Paradigm.Schemes.UT: instance forall k1 k2 k3 (ct :: k1) (cu :: k2) (t :: * -> k3) (u :: k3 -> *). Pandora.Paradigm.Controlflow.Effect.Interpreted.Interpreted (Pandora.Paradigm.Schemes.UT.UT ct cu t u)
- Pandora.Paradigm.Schemes.UTU: instance forall k1 k2 k3 k4 (ct :: k1) (cu :: k2) (t :: k3 -> k4) (u :: k4 -> *) (u' :: * -> k3). Pandora.Paradigm.Controlflow.Effect.Interpreted.Interpreted (Pandora.Paradigm.Schemes.UTU.UTU ct cu t u u')
- Pandora.Paradigm.Schemes.U_T: instance forall k1 k2 k3 k4 (ct :: k1) (cu :: k2) (t :: * -> k3) (p :: k4 -> k3 -> *) (u :: * -> k4). Pandora.Paradigm.Controlflow.Effect.Interpreted.Interpreted (Pandora.Paradigm.Schemes.U_T.U_T ct cu t p u)
- Pandora.Paradigm.Structure: instance Pandora.Paradigm.Structure.Ability.Substructure.Substructure 'Pandora.Paradigm.Primary.Functor.Wye.Left (Pandora.Paradigm.Primary.Transformer.Flip.Flip (Pandora.Paradigm.Primary.Algebraic.Product.:*:) a2)
- Pandora.Paradigm.Structure.Ability.Measurable: Depth :: Scale
- Pandora.Paradigm.Structure.Ability.Measurable: Heighth :: Scale
- Pandora.Paradigm.Structure.Ability.Measurable: Length :: Scale
- Pandora.Paradigm.Structure.Ability.Measurable: class Measurable f t where {
- Pandora.Paradigm.Structure.Ability.Measurable: data Scale
- Pandora.Paradigm.Structure.Ability.Measurable: measure :: forall f t a. Measurable f t => t a -> Measural f t a
- Pandora.Paradigm.Structure.Ability.Measurable: measurement :: Measurable f t => Tagged f (t a) -> Measural f t a
- Pandora.Paradigm.Structure.Ability.Measurable: type family Measural (f :: k) (t :: * -> *) a;
- Pandora.Paradigm.Structure.Ability.Measurable: }
- Pandora.Paradigm.Structure.Modification.Comprehension: instance (Pandora.Pattern.Functor.Covariant.Covariant (->) (->) t, Pandora.Pattern.Functor.Monoidal.Monoidal (->) (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) t) => Pandora.Paradigm.Structure.Ability.Morphable.Morphable 'Pandora.Paradigm.Structure.Ability.Morphable.Push (Pandora.Paradigm.Structure.Modification.Comprehension.Comprehension t)
- Pandora.Paradigm.Structure.Modification.Comprehension: instance (Pandora.Pattern.Functor.Covariant.Covariant (->) (->) t, Pandora.Pattern.Functor.Monoidal.Monoidal (->) (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Sum.:+:) t) => Pandora.Pattern.Functor.Monoidal.Monoidal (->) (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Sum.:+:) (Pandora.Paradigm.Structure.Modification.Comprehension.Comprehension t)
- Pandora.Paradigm.Structure.Modification.Comprehension: instance (Pandora.Pattern.Functor.Covariant.Covariant (->) (->) t, Pandora.Pattern.Functor.Semimonoidal.Semimonoidal (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) t) => Pandora.Pattern.Functor.Semimonoidal.Semimonoidal (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Structure.Modification.Comprehension.Comprehension t)
- Pandora.Paradigm.Structure.Modification.Comprehension: instance (Pandora.Pattern.Functor.Covariant.Covariant (->) (->) t, Pandora.Pattern.Functor.Semimonoidal.Semimonoidal (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Sum.:+:) t) => Pandora.Pattern.Functor.Semimonoidal.Semimonoidal (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Sum.:+:) (Pandora.Paradigm.Structure.Modification.Comprehension.Comprehension t)
- Pandora.Paradigm.Structure.Modification.Comprehension: instance Pandora.Paradigm.Controlflow.Effect.Interpreted.Interpreted (Pandora.Paradigm.Structure.Modification.Comprehension.Comprehension t)
- Pandora.Paradigm.Structure.Modification.Prefixed: instance Pandora.Paradigm.Controlflow.Effect.Interpreted.Interpreted (Pandora.Paradigm.Structure.Modification.Prefixed.Prefixed t k)
- Pandora.Paradigm.Structure.Some.Binary: instance Pandora.Paradigm.Structure.Ability.Measurable.Measurable 'Pandora.Paradigm.Structure.Ability.Measurable.Heighth (Pandora.Paradigm.Primary.Transformer.Construction.Construction Pandora.Paradigm.Primary.Functor.Wye.Wye)
- Pandora.Paradigm.Structure.Some.Binary: instance Pandora.Paradigm.Structure.Ability.Measurable.Measurable 'Pandora.Paradigm.Structure.Ability.Measurable.Heighth Pandora.Paradigm.Structure.Some.Binary.Binary
- Pandora.Paradigm.Structure.Some.Binary: rebalance :: Chain a => ((Wye :. Construction Wye) := a) -> Nonempty Binary a
- Pandora.Paradigm.Structure.Some.List: instance Pandora.Paradigm.Structure.Ability.Measurable.Measurable 'Pandora.Paradigm.Structure.Ability.Measurable.Length (Pandora.Paradigm.Primary.Transformer.Construction.Construction Pandora.Paradigm.Primary.Functor.Maybe.Maybe)
- Pandora.Paradigm.Structure.Some.List: instance Pandora.Paradigm.Structure.Ability.Measurable.Measurable 'Pandora.Paradigm.Structure.Ability.Measurable.Length Pandora.Paradigm.Structure.Some.List.List
- Pandora.Pattern.Functor.Contravariant: (->$<-) :: Contravariant source target t => source a b -> target (t b) (t a)
- Pandora.Pattern.Functor.Covariant: (-<$$$$>-) :: forall category t u v w a b. (Covariant category category t, Covariant category category u, Covariant category category v, Covariant category category w) => category a b -> category (t (u (v (w a)))) (t (u (v (w b))))
- Pandora.Pattern.Functor.Covariant: (-<$$$>-) :: forall t u v category a b. (Covariant category category t, Covariant category category u, Covariant category category v) => category a b -> category (t (u (v a))) (t (u (v b)))
- Pandora.Pattern.Functor.Covariant: (-<$$>-) :: forall t u category a b. (Covariant category category u, Covariant category category t) => category a b -> category (t (u a)) (t (u b))
- Pandora.Pattern.Functor.Covariant: (-<$$>>-) :: forall source target t u a b. (Covariant source target u, Covariant target target t) => source a b -> target (t (u a)) (t (u b))
- Pandora.Pattern.Functor.Covariant: (-<$>-) :: Covariant source target t => source a b -> target (t a) (t b)
- Pandora.Pattern.Functor.Covariant: (-<<$$>-) :: forall t u source target a b. (Covariant source source u, Covariant source target t) => source a b -> target (t (u a)) (t (u b))
- Pandora.Pattern.Functor.Semimonoidal: multiply :: Semimonoidal p source target t => p (source (t a) (t b)) (t (target a b))
- Pandora.Pattern.Transformer.Hoistable: hoist :: (Hoistable t, Covariant (->) (->) u) => (u ~> v) -> t u ~> t v
+ Pandora.Core.Appliable: (!) :: Appliable m a b n c d => m a b -> n c d
+ Pandora.Core.Appliable: class Appliable m a b n c d | m a b -> n c d
+ Pandora.Core.Appliable: infixr 0 !
+ Pandora.Paradigm.Controlflow.Effect.Interpreted: instance Pandora.Paradigm.Controlflow.Effect.Interpreted.Interpreted (->) (Pandora.Pattern.Morphism.Flip.Flip v a)
+ Pandora.Paradigm.Controlflow.Effect.Interpreted: instance Pandora.Paradigm.Controlflow.Effect.Interpreted.Interpreted (->) (Pandora.Pattern.Morphism.Straight.Straight v e)
+ Pandora.Paradigm.Controlflow.Effect.Transformer: type family Transformer c t
+ Pandora.Paradigm.Controlflow.Effect.Transformer.Comonadic: instance (Pandora.Paradigm.Primary.Algebraic.Extractable (t Pandora.Paradigm.Controlflow.Effect.Transformer.Comonadic.:< u), Pandora.Pattern.Functor.Extendable.Extendable (->) (t Pandora.Paradigm.Controlflow.Effect.Transformer.Comonadic.:< u)) => Pandora.Pattern.Functor.Comonad.Comonad (->) (t Pandora.Paradigm.Controlflow.Effect.Transformer.Comonadic.:< u)
+ Pandora.Paradigm.Controlflow.Effect.Transformer.Comonadic: instance Pandora.Paradigm.Controlflow.Effect.Interpreted.Interpreted (->) (Pandora.Paradigm.Controlflow.Effect.Interpreted.Schematic Pandora.Pattern.Functor.Comonad.Comonad t u) => Pandora.Paradigm.Controlflow.Effect.Interpreted.Interpreted (->) (t Pandora.Paradigm.Controlflow.Effect.Transformer.Comonadic.:< u)
+ Pandora.Paradigm.Controlflow.Effect.Transformer.Comonadic: instance Pandora.Pattern.Functor.Monoidal.Monoidal (Pandora.Paradigm.Primary.Algebraic.Exponential.-->) (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Controlflow.Effect.Interpreted.Schematic Pandora.Pattern.Functor.Comonad.Comonad t u) => Pandora.Pattern.Functor.Monoidal.Monoidal (Pandora.Paradigm.Primary.Algebraic.Exponential.-->) (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (t Pandora.Paradigm.Controlflow.Effect.Transformer.Comonadic.:< u)
+ Pandora.Paradigm.Controlflow.Effect.Transformer.Comonadic: instance Pandora.Pattern.Functor.Semimonoidal.Semimonoidal (Pandora.Paradigm.Primary.Algebraic.Exponential.-->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Controlflow.Effect.Interpreted.Schematic Pandora.Pattern.Functor.Comonad.Comonad t u) => Pandora.Pattern.Functor.Semimonoidal.Semimonoidal (Pandora.Paradigm.Primary.Algebraic.Exponential.-->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (t Pandora.Paradigm.Controlflow.Effect.Transformer.Comonadic.:< u)
+ Pandora.Paradigm.Controlflow.Effect.Transformer.Monadic: instance (Pandora.Pattern.Functor.Covariant.Covariant (->) (->) (Pandora.Paradigm.Controlflow.Effect.Interpreted.Schematic Pandora.Pattern.Functor.Monad.Monad t u), Pandora.Pattern.Functor.Monoidal.Monoidal (Pandora.Paradigm.Primary.Algebraic.Exponential.-->) (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Controlflow.Effect.Interpreted.Schematic Pandora.Pattern.Functor.Monad.Monad t u), Pandora.Pattern.Functor.Bindable.Bindable (->) (t Pandora.Paradigm.Controlflow.Effect.Transformer.Monadic.:> u)) => Pandora.Pattern.Functor.Monad.Monad (->) (t Pandora.Paradigm.Controlflow.Effect.Transformer.Monadic.:> u)
+ Pandora.Paradigm.Controlflow.Effect.Transformer.Monadic: instance Pandora.Paradigm.Controlflow.Effect.Interpreted.Interpreted (->) (Pandora.Paradigm.Controlflow.Effect.Interpreted.Schematic Pandora.Pattern.Functor.Monad.Monad t u) => Pandora.Paradigm.Controlflow.Effect.Interpreted.Interpreted (->) (t Pandora.Paradigm.Controlflow.Effect.Transformer.Monadic.:> u)
+ Pandora.Paradigm.Controlflow.Effect.Transformer.Monadic: instance Pandora.Pattern.Functor.Monoidal.Monoidal (Pandora.Paradigm.Primary.Algebraic.Exponential.-->) (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Controlflow.Effect.Interpreted.Schematic Pandora.Pattern.Functor.Monad.Monad t u) => Pandora.Pattern.Functor.Monoidal.Monoidal (Pandora.Paradigm.Primary.Algebraic.Exponential.-->) (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (t Pandora.Paradigm.Controlflow.Effect.Transformer.Monadic.:> u)
+ Pandora.Paradigm.Controlflow.Effect.Transformer.Monadic: instance Pandora.Pattern.Functor.Semimonoidal.Semimonoidal (Pandora.Paradigm.Primary.Algebraic.Exponential.-->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Controlflow.Effect.Interpreted.Schematic Pandora.Pattern.Functor.Monad.Monad t u) => Pandora.Pattern.Functor.Semimonoidal.Semimonoidal (Pandora.Paradigm.Primary.Algebraic.Exponential.-->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (t Pandora.Paradigm.Controlflow.Effect.Transformer.Monadic.:> u)
+ Pandora.Paradigm.Controlflow.Pipeline: instance Pandora.Paradigm.Controlflow.Effect.Interpreted.Interpreted (->) (Pandora.Paradigm.Controlflow.Pipeline.Consumer o t)
+ Pandora.Paradigm.Controlflow.Pipeline: instance Pandora.Paradigm.Controlflow.Effect.Interpreted.Interpreted (->) (Pandora.Paradigm.Controlflow.Pipeline.Producer i t)
+ Pandora.Paradigm.Inventory.Accumulator: instance Pandora.Paradigm.Controlflow.Effect.Interpreted.Interpreted (->) (Pandora.Paradigm.Inventory.Accumulator.Accumulator e)
+ Pandora.Paradigm.Inventory.Accumulator: instance Pandora.Pattern.Object.Semigroup.Semigroup e => Pandora.Pattern.Functor.Semimonoidal.Semimonoidal (Pandora.Paradigm.Primary.Algebraic.Exponential.-->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Inventory.Accumulator.Accumulator e)
+ Pandora.Paradigm.Inventory.Environment: instance Pandora.Paradigm.Controlflow.Effect.Interpreted.Interpreted (->) (Pandora.Paradigm.Inventory.Environment.Environment e)
+ Pandora.Paradigm.Inventory.Environment: instance Pandora.Pattern.Functor.Contravariant.Contravariant (->) (->) (Pandora.Pattern.Morphism.Flip.Flip Pandora.Paradigm.Inventory.Environment.Environment a)
+ Pandora.Paradigm.Inventory.Environment: instance Pandora.Pattern.Functor.Monoidal.Monoidal (Pandora.Paradigm.Primary.Algebraic.Exponential.-->) (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Inventory.Environment.Environment e)
+ Pandora.Paradigm.Inventory.Environment: instance Pandora.Pattern.Functor.Semimonoidal.Semimonoidal (Pandora.Paradigm.Primary.Algebraic.Exponential.-->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Inventory.Environment.Environment e)
+ Pandora.Paradigm.Inventory.Equipment: instance Pandora.Paradigm.Controlflow.Effect.Interpreted.Interpreted (->) (Pandora.Paradigm.Inventory.Equipment.Equipment e)
+ Pandora.Paradigm.Inventory.Imprint: instance Pandora.Paradigm.Controlflow.Effect.Interpreted.Interpreted (->) (Pandora.Paradigm.Inventory.Imprint.Imprint e)
+ Pandora.Paradigm.Inventory.Imprint: instance Pandora.Pattern.Functor.Contravariant.Contravariant (->) (->) (Pandora.Pattern.Morphism.Flip.Flip Pandora.Paradigm.Inventory.Imprint.Imprint a)
+ Pandora.Paradigm.Inventory.Optics: instance Pandora.Pattern.Functor.Invariant.Invariant (Pandora.Pattern.Morphism.Flip.Flip (Pandora.Paradigm.Inventory.Optics.Lens available) tgt)
+ Pandora.Paradigm.Inventory.State: instance Pandora.Paradigm.Controlflow.Effect.Interpreted.Interpreted (->) (Pandora.Paradigm.Inventory.State.State s)
+ Pandora.Paradigm.Inventory.State: instance Pandora.Pattern.Functor.Invariant.Invariant (Pandora.Pattern.Morphism.Flip.Flip Pandora.Paradigm.Inventory.State.State r)
+ Pandora.Paradigm.Inventory.State: instance Pandora.Pattern.Functor.Monad.Monad (->) (Pandora.Paradigm.Inventory.State.State s)
+ Pandora.Paradigm.Inventory.State: instance Pandora.Pattern.Functor.Monoidal.Monoidal (Pandora.Paradigm.Primary.Algebraic.Exponential.-->) (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Inventory.State.State s)
+ Pandora.Paradigm.Inventory.State: instance Pandora.Pattern.Functor.Semimonoidal.Semimonoidal (Pandora.Paradigm.Primary.Algebraic.Exponential.-->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Inventory.State.State s)
+ Pandora.Paradigm.Inventory.Store: instance Pandora.Paradigm.Controlflow.Effect.Interpreted.Interpreted (->) (Pandora.Paradigm.Inventory.Store.Store s)
+ Pandora.Paradigm.Inventory.Store: instance Pandora.Pattern.Functor.Comonad.Comonad (->) (Pandora.Paradigm.Inventory.Store.Store s)
+ Pandora.Paradigm.Inventory.Store: instance Pandora.Pattern.Functor.Invariant.Invariant (Pandora.Pattern.Morphism.Flip.Flip Pandora.Paradigm.Inventory.Store.Store r)
+ Pandora.Paradigm.Primary: instance Pandora.Paradigm.Structure.Ability.Morphable.Morphable ('Pandora.Paradigm.Structure.Ability.Morphable.Into ('Pandora.Paradigm.Primary.Functor.These.That Pandora.Paradigm.Primary.Functor.Maybe.Maybe)) (Pandora.Pattern.Morphism.Flip.Flip Pandora.Paradigm.Primary.Functor.These.These a2)
+ Pandora.Paradigm.Primary: instance Pandora.Paradigm.Structure.Ability.Morphable.Morphable ('Pandora.Paradigm.Structure.Ability.Morphable.Into ('Pandora.Paradigm.Primary.Functor.Wedge.Here Pandora.Paradigm.Primary.Functor.Maybe.Maybe)) (Pandora.Pattern.Morphism.Flip.Flip Pandora.Paradigm.Primary.Functor.Wedge.Wedge a2)
+ Pandora.Paradigm.Primary: instance Pandora.Paradigm.Structure.Ability.Morphable.Morphable ('Pandora.Paradigm.Structure.Ability.Morphable.Into (Pandora.Pattern.Morphism.Flip.Flip Pandora.Paradigm.Primary.Functor.Conclusion.Conclusion e)) Pandora.Paradigm.Primary.Functor.Maybe.Maybe
+ Pandora.Paradigm.Primary: instance Pandora.Pattern.Functor.Adjoint.Adjoint (->) (->) (Pandora.Pattern.Morphism.Flip.Flip (Pandora.Paradigm.Primary.Algebraic.Product.:*:) s) ((->) s)
+ Pandora.Paradigm.Primary.Algebraic: (<-*-) :: (Covariant (->) (->) t, Semimonoidal (-->) (:*:) (:*:) t) => t (a -> b) -> t a -> t b
+ Pandora.Paradigm.Primary.Algebraic: instance Pandora.Pattern.Functor.Comonad.Comonad (->) ((Pandora.Paradigm.Primary.Algebraic.Product.:*:) s)
+ Pandora.Paradigm.Primary.Algebraic: instance Pandora.Pattern.Functor.Monoidal.Monoidal (Pandora.Paradigm.Primary.Algebraic.Exponential.-->) (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) ((Pandora.Paradigm.Primary.Algebraic.Sum.:+:) e)
+ Pandora.Paradigm.Primary.Algebraic: instance Pandora.Pattern.Functor.Monoidal.Monoidal (Pandora.Paradigm.Primary.Algebraic.Exponential.<--) (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Pattern.Morphism.Flip.Flip (Pandora.Paradigm.Primary.Algebraic.Product.:*:) a)
+ Pandora.Paradigm.Primary.Algebraic: instance Pandora.Pattern.Functor.Semimonoidal.Semimonoidal (Pandora.Paradigm.Primary.Algebraic.Exponential.-->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) ((->) e)
+ Pandora.Paradigm.Primary.Algebraic: instance Pandora.Pattern.Functor.Semimonoidal.Semimonoidal (Pandora.Paradigm.Primary.Algebraic.Exponential.-->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) ((Pandora.Paradigm.Primary.Algebraic.Sum.:+:) e)
+ Pandora.Paradigm.Primary.Algebraic: instance Pandora.Pattern.Functor.Semimonoidal.Semimonoidal (Pandora.Paradigm.Primary.Algebraic.Exponential.-->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Sum.:+:) ((Pandora.Paradigm.Primary.Algebraic.Sum.:+:) e)
+ Pandora.Paradigm.Primary.Algebraic: instance Pandora.Pattern.Functor.Semimonoidal.Semimonoidal (Pandora.Paradigm.Primary.Algebraic.Exponential.<--) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Pattern.Morphism.Flip.Flip (Pandora.Paradigm.Primary.Algebraic.Product.:*:) a)
+ Pandora.Paradigm.Primary.Algebraic: type Alternative t = (Covariant (->) (->) t, Semimonoidal (-->) (:*:) (:+:) t, Monoidal (-->) (->) (:*:) (:+:) t)
+ Pandora.Paradigm.Primary.Algebraic: type Applicative t = (Covariant (->) (->) t, Semimonoidal (-->) (:*:) (:*:) t, Monoidal (-->) (->) (:*:) (:*:) t)
+ Pandora.Paradigm.Primary.Algebraic: type Extractable t = Monoidal (<--) (->) (:*:) (:*:) t
+ Pandora.Paradigm.Primary.Algebraic: type Pointable t = Monoidal (-->) (->) (:*:) (:*:) t
+ Pandora.Paradigm.Primary.Algebraic.Exponential: instance Pandora.Core.Appliable.Appliable (->) a (b -> c) (->) b (a -> c)
+ Pandora.Paradigm.Primary.Algebraic.Exponential: instance Pandora.Core.Appliable.Appliable (->) c b (->) c b
+ Pandora.Paradigm.Primary.Algebraic.Exponential: instance Pandora.Pattern.Functor.Covariant.Covariant (->) (->) ((Pandora.Paradigm.Primary.Algebraic.Exponential.-->) b)
+ Pandora.Paradigm.Primary.Algebraic.Product: instance Pandora.Pattern.Functor.Covariant.Covariant (->) (->) (Pandora.Pattern.Morphism.Flip.Flip (Pandora.Paradigm.Primary.Algebraic.Product.:*:) a)
+ Pandora.Paradigm.Primary.Algebraic.Product: instance Pandora.Pattern.Functor.Semimonoidal.Semimonoidal (Pandora.Paradigm.Primary.Algebraic.Exponential.-->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) t => Pandora.Pattern.Functor.Semimonoidal.Semimonoidal (Pandora.Paradigm.Primary.Algebraic.Exponential.-->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) ((t Pandora.Paradigm.Schemes.T_U.<:.:> t) Pandora.Core.Functor.:= (Pandora.Paradigm.Primary.Algebraic.Product.:*:))
+ Pandora.Paradigm.Primary.Algebraic.Sum: instance Pandora.Pattern.Functor.Covariant.Covariant (->) (->) (Pandora.Pattern.Morphism.Flip.Flip (Pandora.Paradigm.Primary.Algebraic.Sum.:+:) a)
+ Pandora.Paradigm.Primary.Functor.Conclusion: instance (Pandora.Pattern.Functor.Monoidal.Monoidal (Pandora.Paradigm.Primary.Algebraic.Exponential.-->) (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) u, Pandora.Pattern.Functor.Bindable.Bindable (->) u) => Pandora.Paradigm.Primary.Functor.Conclusion.Catchable e (Pandora.Paradigm.Primary.Functor.Conclusion.Conclusion e Pandora.Paradigm.Schemes.UT.<.:> u)
+ Pandora.Paradigm.Primary.Functor.Conclusion: instance Pandora.Paradigm.Controlflow.Effect.Interpreted.Interpreted (->) (Pandora.Paradigm.Primary.Functor.Conclusion.Conclusion e)
+ Pandora.Paradigm.Primary.Functor.Conclusion: instance Pandora.Pattern.Functor.Covariant.Covariant (->) (->) (Pandora.Pattern.Morphism.Flip.Flip Pandora.Paradigm.Primary.Functor.Conclusion.Conclusion e)
+ Pandora.Paradigm.Primary.Functor.Conclusion: instance Pandora.Pattern.Functor.Monoidal.Monoidal (Pandora.Paradigm.Primary.Algebraic.Exponential.-->) (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Functor.Conclusion.Conclusion e)
+ Pandora.Paradigm.Primary.Functor.Conclusion: instance Pandora.Pattern.Functor.Semimonoidal.Semimonoidal (Pandora.Paradigm.Primary.Algebraic.Exponential.-->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Functor.Conclusion.Conclusion e)
+ Pandora.Paradigm.Primary.Functor.Conclusion: instance Pandora.Pattern.Object.Semigroup.Semigroup e => Pandora.Pattern.Functor.Semimonoidal.Semimonoidal (Pandora.Paradigm.Primary.Algebraic.Exponential.-->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Sum.:+:) (Pandora.Paradigm.Primary.Functor.Conclusion.Conclusion e)
+ Pandora.Paradigm.Primary.Functor.Constant: instance Pandora.Pattern.Functor.Covariant.Covariant (->) (->) (Pandora.Pattern.Morphism.Flip.Flip Pandora.Paradigm.Primary.Functor.Constant.Constant b)
+ Pandora.Paradigm.Primary.Functor.Endo: instance Pandora.Paradigm.Controlflow.Effect.Interpreted.Interpreted (->) Pandora.Paradigm.Primary.Functor.Endo.Endo
+ Pandora.Paradigm.Primary.Functor.Identity: instance Pandora.Pattern.Functor.Comonad.Comonad (->) Pandora.Paradigm.Primary.Functor.Identity.Identity
+ Pandora.Paradigm.Primary.Functor.Identity: instance Pandora.Pattern.Functor.Monad.Monad (->) Pandora.Paradigm.Primary.Functor.Identity.Identity
+ Pandora.Paradigm.Primary.Functor.Identity: instance Pandora.Pattern.Functor.Monoidal.Monoidal (Pandora.Paradigm.Primary.Algebraic.Exponential.-->) (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) Pandora.Paradigm.Primary.Functor.Identity.Identity
+ Pandora.Paradigm.Primary.Functor.Identity: instance Pandora.Pattern.Functor.Semimonoidal.Semimonoidal (Pandora.Paradigm.Primary.Algebraic.Exponential.-->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) Pandora.Paradigm.Primary.Functor.Identity.Identity
+ Pandora.Paradigm.Primary.Functor.Maybe: instance Pandora.Paradigm.Controlflow.Effect.Interpreted.Interpreted (->) Pandora.Paradigm.Primary.Functor.Maybe.Maybe
+ Pandora.Paradigm.Primary.Functor.Maybe: instance Pandora.Pattern.Functor.Monoidal.Monoidal (Pandora.Paradigm.Primary.Algebraic.Exponential.-->) (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) Pandora.Paradigm.Primary.Functor.Maybe.Maybe
+ Pandora.Paradigm.Primary.Functor.Maybe: instance Pandora.Pattern.Functor.Monoidal.Monoidal (Pandora.Paradigm.Primary.Algebraic.Exponential.-->) (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Sum.:+:) Pandora.Paradigm.Primary.Functor.Maybe.Maybe
+ Pandora.Paradigm.Primary.Functor.Maybe: instance Pandora.Pattern.Functor.Semimonoidal.Semimonoidal (Pandora.Paradigm.Primary.Algebraic.Exponential.-->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) Pandora.Paradigm.Primary.Functor.Maybe.Maybe
+ Pandora.Paradigm.Primary.Functor.Maybe: instance Pandora.Pattern.Functor.Semimonoidal.Semimonoidal (Pandora.Paradigm.Primary.Algebraic.Exponential.-->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Sum.:+:) Pandora.Paradigm.Primary.Functor.Maybe.Maybe
+ Pandora.Paradigm.Primary.Functor.Predicate: instance Pandora.Paradigm.Controlflow.Effect.Interpreted.Interpreted (->) Pandora.Paradigm.Primary.Functor.Predicate.Predicate
+ Pandora.Paradigm.Primary.Functor.Tagged: instance Pandora.Pattern.Functor.Covariant.Covariant (->) (->) (Pandora.Pattern.Morphism.Flip.Flip Pandora.Paradigm.Primary.Functor.Tagged.Tagged a)
+ Pandora.Paradigm.Primary.Functor.Tagged: instance forall k (tag :: k). Pandora.Pattern.Functor.Comonad.Comonad (->) (Pandora.Paradigm.Primary.Functor.Tagged.Tagged tag)
+ Pandora.Paradigm.Primary.Functor.Tagged: instance forall k (tag :: k). Pandora.Pattern.Functor.Monad.Monad (->) (Pandora.Paradigm.Primary.Functor.Tagged.Tagged tag)
+ Pandora.Paradigm.Primary.Functor.Tagged: instance forall k (tag :: k). Pandora.Pattern.Functor.Monoidal.Monoidal (Pandora.Paradigm.Primary.Algebraic.Exponential.-->) (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Functor.Tagged.Tagged tag)
+ Pandora.Paradigm.Primary.Functor.Tagged: instance forall k (tag :: k). Pandora.Pattern.Functor.Semimonoidal.Semimonoidal (Pandora.Paradigm.Primary.Algebraic.Exponential.-->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Functor.Tagged.Tagged tag)
+ Pandora.Paradigm.Primary.Functor.Validation: instance Pandora.Pattern.Functor.Covariant.Covariant (->) (->) (Pandora.Pattern.Morphism.Flip.Flip Pandora.Paradigm.Primary.Functor.Validation.Validation a)
+ Pandora.Paradigm.Primary.Functor.Validation: instance Pandora.Pattern.Object.Semigroup.Semigroup e => Pandora.Pattern.Functor.Monoidal.Monoidal (Pandora.Paradigm.Primary.Algebraic.Exponential.-->) (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Functor.Validation.Validation e)
+ Pandora.Paradigm.Primary.Functor.Validation: instance Pandora.Pattern.Object.Semigroup.Semigroup e => Pandora.Pattern.Functor.Semimonoidal.Semimonoidal (Pandora.Paradigm.Primary.Algebraic.Exponential.-->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Functor.Validation.Validation e)
+ Pandora.Paradigm.Primary.Functor.Validation: instance Pandora.Pattern.Object.Semigroup.Semigroup e => Pandora.Pattern.Functor.Semimonoidal.Semimonoidal (Pandora.Paradigm.Primary.Algebraic.Exponential.-->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Sum.:+:) (Pandora.Paradigm.Primary.Functor.Validation.Validation e)
+ Pandora.Paradigm.Primary.Transformer.Backwards: instance (Pandora.Pattern.Functor.Covariant.Covariant (->) (->) t, Pandora.Pattern.Functor.Monoidal.Monoidal (Pandora.Paradigm.Primary.Algebraic.Exponential.-->) (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) t) => Pandora.Pattern.Functor.Monoidal.Monoidal (Pandora.Paradigm.Primary.Algebraic.Exponential.-->) (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Transformer.Backwards.Backwards t)
+ Pandora.Paradigm.Primary.Transformer.Backwards: instance (Pandora.Pattern.Functor.Semimonoidal.Semimonoidal (Pandora.Paradigm.Primary.Algebraic.Exponential.-->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) t, Pandora.Pattern.Functor.Covariant.Covariant (->) (->) t) => Pandora.Pattern.Functor.Semimonoidal.Semimonoidal (Pandora.Paradigm.Primary.Algebraic.Exponential.-->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Transformer.Backwards.Backwards t)
+ Pandora.Paradigm.Primary.Transformer.Backwards: instance Pandora.Paradigm.Controlflow.Effect.Interpreted.Interpreted (->) (Pandora.Paradigm.Primary.Transformer.Backwards.Backwards t)
+ Pandora.Paradigm.Primary.Transformer.Construction: instance (Pandora.Pattern.Functor.Covariant.Covariant (->) (->) t, Pandora.Pattern.Functor.Semimonoidal.Semimonoidal (Pandora.Paradigm.Primary.Algebraic.Exponential.-->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) t) => Pandora.Pattern.Functor.Semimonoidal.Semimonoidal (Pandora.Paradigm.Primary.Algebraic.Exponential.-->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Transformer.Construction.Construction t)
+ Pandora.Paradigm.Primary.Transformer.Construction: instance (Pandora.Pattern.Functor.Covariant.Covariant (->) (->) t, Pandora.Pattern.Functor.Semimonoidal.Semimonoidal (Pandora.Paradigm.Primary.Algebraic.Exponential.-->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) t, Pandora.Pattern.Functor.Monoidal.Monoidal (Pandora.Paradigm.Primary.Algebraic.Exponential.-->) (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Sum.:+:) t) => Pandora.Pattern.Functor.Monoidal.Monoidal (Pandora.Paradigm.Primary.Algebraic.Exponential.-->) (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Transformer.Construction.Construction t)
+ Pandora.Paradigm.Primary.Transformer.Construction: instance (Pandora.Pattern.Functor.Covariant.Covariant (->) (->) t, Pandora.Pattern.Functor.Semimonoidal.Semimonoidal (Pandora.Paradigm.Primary.Algebraic.Exponential.<--) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) t) => Pandora.Pattern.Functor.Comonad.Comonad (->) (Pandora.Paradigm.Primary.Transformer.Construction.Construction t)
+ Pandora.Paradigm.Primary.Transformer.Continuation: instance forall k (r :: k) (t :: k -> *). Pandora.Paradigm.Controlflow.Effect.Interpreted.Interpreted (->) (Pandora.Paradigm.Primary.Transformer.Continuation.Continuation r t)
+ Pandora.Paradigm.Primary.Transformer.Instruction: instance (Pandora.Pattern.Functor.Covariant.Covariant (->) (->) t, Pandora.Pattern.Functor.Semimonoidal.Semimonoidal (Pandora.Paradigm.Primary.Algebraic.Exponential.-->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) t) => Pandora.Pattern.Functor.Monoidal.Monoidal (Pandora.Paradigm.Primary.Algebraic.Exponential.-->) (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Transformer.Instruction.Instruction t)
+ Pandora.Paradigm.Primary.Transformer.Instruction: instance (Pandora.Pattern.Functor.Covariant.Covariant (->) (->) t, Pandora.Pattern.Functor.Semimonoidal.Semimonoidal (Pandora.Paradigm.Primary.Algebraic.Exponential.-->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) t) => Pandora.Pattern.Functor.Semimonoidal.Semimonoidal (Pandora.Paradigm.Primary.Algebraic.Exponential.-->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Transformer.Instruction.Instruction t)
+ Pandora.Paradigm.Primary.Transformer.Instruction: instance (forall (t :: * -> *). Pandora.Pattern.Functor.Bindable.Bindable (->) t, forall (t :: * -> *). Pandora.Pattern.Functor.Monoidal.Monoidal (Pandora.Paradigm.Primary.Algebraic.Exponential.-->) (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) t) => Pandora.Pattern.Transformer.Lowerable.Lowerable (->) Pandora.Paradigm.Primary.Transformer.Instruction.Instruction
+ Pandora.Paradigm.Primary.Transformer.Instruction: instance Pandora.Pattern.Functor.Monad.Monad (->) t => Pandora.Pattern.Functor.Monad.Monad (->) (Pandora.Paradigm.Primary.Transformer.Instruction.Instruction t)
+ Pandora.Paradigm.Primary.Transformer.Jack: instance (Pandora.Pattern.Functor.Monoidal.Monoidal (Pandora.Paradigm.Primary.Algebraic.Exponential.-->) (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) t, Pandora.Pattern.Functor.Bindable.Bindable (->) t) => Pandora.Pattern.Functor.Bindable.Bindable (->) (Pandora.Paradigm.Primary.Transformer.Jack.Jack t)
+ Pandora.Paradigm.Primary.Transformer.Kan: instance Pandora.Paradigm.Controlflow.Effect.Interpreted.Interpreted (->) (Pandora.Paradigm.Primary.Transformer.Kan.Kan 'Pandora.Paradigm.Primary.Functor.Wye.Left t u b)
+ Pandora.Paradigm.Primary.Transformer.Kan: instance Pandora.Paradigm.Controlflow.Effect.Interpreted.Interpreted (->) (Pandora.Paradigm.Primary.Transformer.Kan.Kan 'Pandora.Paradigm.Primary.Functor.Wye.Right t u b)
+ Pandora.Paradigm.Primary.Transformer.Reverse: instance (Pandora.Pattern.Functor.Covariant.Covariant (->) (->) t, Pandora.Pattern.Functor.Monoidal.Monoidal (Pandora.Paradigm.Primary.Algebraic.Exponential.-->) (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) t) => Pandora.Pattern.Functor.Monoidal.Monoidal (Pandora.Paradigm.Primary.Algebraic.Exponential.-->) (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Transformer.Reverse.Reverse t)
+ Pandora.Paradigm.Primary.Transformer.Reverse: instance (Pandora.Pattern.Functor.Semimonoidal.Semimonoidal (Pandora.Paradigm.Primary.Algebraic.Exponential.-->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) t, Pandora.Pattern.Functor.Covariant.Covariant (->) (->) t) => Pandora.Pattern.Functor.Semimonoidal.Semimonoidal (Pandora.Paradigm.Primary.Algebraic.Exponential.-->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Transformer.Reverse.Reverse t)
+ Pandora.Paradigm.Primary.Transformer.Reverse: instance Pandora.Paradigm.Controlflow.Effect.Interpreted.Interpreted (->) (Pandora.Paradigm.Primary.Transformer.Reverse.Reverse t)
+ Pandora.Paradigm.Primary.Transformer.Tap: instance Pandora.Pattern.Functor.Semimonoidal.Semimonoidal (Pandora.Paradigm.Primary.Algebraic.Exponential.-->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) t => Pandora.Pattern.Functor.Semimonoidal.Semimonoidal (Pandora.Paradigm.Primary.Algebraic.Exponential.-->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Transformer.Tap.Tap ((t Pandora.Paradigm.Schemes.T_U.<:.:> t) Pandora.Core.Functor.:= (Pandora.Paradigm.Primary.Algebraic.Product.:*:)))
+ Pandora.Paradigm.Primary.Transformer.Tap: instance Pandora.Pattern.Functor.Semimonoidal.Semimonoidal (Pandora.Paradigm.Primary.Algebraic.Exponential.-->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) t => Pandora.Pattern.Functor.Semimonoidal.Semimonoidal (Pandora.Paradigm.Primary.Algebraic.Exponential.-->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Transformer.Tap.Tap t)
+ Pandora.Paradigm.Schemes.PQ_: instance forall k1 k2 (p :: k1 -> k2 -> *) (q :: * -> k1 -> k2) (a :: k1). Pandora.Paradigm.Controlflow.Effect.Interpreted.Interpreted (->) (Pandora.Paradigm.Schemes.PQ_.PQ_ p q a)
+ Pandora.Paradigm.Schemes.PTU: instance forall k1 k2 k3 (p :: k1 -> k2 -> *) (t :: k3 -> k1) (u :: * -> k2) (a :: k3). Pandora.Paradigm.Controlflow.Effect.Interpreted.Interpreted (->) (Pandora.Paradigm.Schemes.PTU.PTU p t u a)
+ Pandora.Paradigm.Schemes.P_Q_T: instance Pandora.Paradigm.Controlflow.Effect.Interpreted.Interpreted (->) (Pandora.Paradigm.Schemes.P_Q_T.P_Q_T p q t a)
+ Pandora.Paradigm.Schemes.P_T: instance forall k1 k2 (p :: k1 -> * -> *) (t :: k2 -> k1) (a :: k2). Pandora.Paradigm.Controlflow.Effect.Interpreted.Interpreted (->) (Pandora.Paradigm.Schemes.P_T.P_T p t a)
+ Pandora.Paradigm.Schemes.TU: instance (Pandora.Pattern.Functor.Covariant.Covariant (->) (->) t, Pandora.Pattern.Functor.Covariant.Covariant (->) (->) u, Pandora.Pattern.Functor.Monoidal.Monoidal (Pandora.Paradigm.Primary.Algebraic.Exponential.-->) (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Sum.:+:) t) => Pandora.Pattern.Functor.Monoidal.Monoidal (Pandora.Paradigm.Primary.Algebraic.Exponential.-->) (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Sum.:+:) (t Pandora.Paradigm.Schemes.TU.<:.> u)
+ Pandora.Paradigm.Schemes.TU: instance (Pandora.Pattern.Functor.Covariant.Covariant (->) (->) t, Pandora.Pattern.Functor.Covariant.Covariant (->) (->) u, Pandora.Pattern.Functor.Semimonoidal.Semimonoidal (Pandora.Paradigm.Primary.Algebraic.Exponential.-->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) u, Pandora.Pattern.Functor.Monoidal.Monoidal (Pandora.Paradigm.Primary.Algebraic.Exponential.-->) (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) t, Pandora.Pattern.Functor.Monoidal.Monoidal (Pandora.Paradigm.Primary.Algebraic.Exponential.-->) (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) u) => Pandora.Pattern.Functor.Monoidal.Monoidal (Pandora.Paradigm.Primary.Algebraic.Exponential.-->) (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (t Pandora.Paradigm.Schemes.TU.<:.> u)
+ Pandora.Paradigm.Schemes.TU: instance (Pandora.Pattern.Functor.Covariant.Covariant (->) (->) t, Pandora.Pattern.Functor.Covariant.Covariant (->) (->) u, Pandora.Pattern.Functor.Semimonoidal.Semimonoidal (Pandora.Paradigm.Primary.Algebraic.Exponential.-->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Sum.:+:) t) => Pandora.Pattern.Functor.Semimonoidal.Semimonoidal (Pandora.Paradigm.Primary.Algebraic.Exponential.-->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Sum.:+:) (t Pandora.Paradigm.Schemes.TU.<:.> u)
+ Pandora.Paradigm.Schemes.TU: instance (Pandora.Pattern.Functor.Covariant.Covariant (->) (->) t, Pandora.Pattern.Functor.Semimonoidal.Semimonoidal (Pandora.Paradigm.Primary.Algebraic.Exponential.-->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) t, Pandora.Pattern.Functor.Semimonoidal.Semimonoidal (Pandora.Paradigm.Primary.Algebraic.Exponential.-->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) u) => Pandora.Pattern.Functor.Semimonoidal.Semimonoidal (Pandora.Paradigm.Primary.Algebraic.Exponential.-->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (t Pandora.Paradigm.Schemes.TU.<:.> u)
+ Pandora.Paradigm.Schemes.TU: instance (Pandora.Pattern.Functor.Covariant.Covariant m m t, Pandora.Pattern.Functor.Covariant.Covariant m m u, Pandora.Paradigm.Controlflow.Effect.Interpreted.Interpreted m (t Pandora.Paradigm.Schemes.TU.<:.> u)) => Pandora.Pattern.Functor.Covariant.Covariant m m (t Pandora.Paradigm.Schemes.TU.<:.> u)
+ Pandora.Paradigm.Schemes.TU: instance Pandora.Pattern.Functor.Monoidal.Monoidal (Pandora.Paradigm.Primary.Algebraic.Exponential.-->) (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) t => Pandora.Pattern.Transformer.Liftable.Liftable (->) (Pandora.Paradigm.Schemes.TU.TU Pandora.Pattern.Functor.Covariant.Covariant Pandora.Pattern.Functor.Covariant.Covariant t)
+ Pandora.Paradigm.Schemes.TU: instance forall k1 k2 k3 (ct :: k1) (cu :: k2) (t :: k3 -> *) (u :: * -> k3). Pandora.Paradigm.Controlflow.Effect.Interpreted.Interpreted (->) (Pandora.Paradigm.Schemes.TU.TU ct cu t u)
+ Pandora.Paradigm.Schemes.TUT: instance (Pandora.Pattern.Functor.Covariant.Covariant (->) (->) t, Pandora.Pattern.Functor.Covariant.Covariant (->) (->) t', Pandora.Pattern.Functor.Covariant.Covariant (->) (->) u, Pandora.Pattern.Functor.Semimonoidal.Semimonoidal (Pandora.Paradigm.Primary.Algebraic.Exponential.-->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) t, Pandora.Pattern.Functor.Semimonoidal.Semimonoidal (Pandora.Paradigm.Primary.Algebraic.Exponential.-->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) u, Pandora.Pattern.Functor.Semimonoidal.Semimonoidal (Pandora.Paradigm.Primary.Algebraic.Exponential.-->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) t') => Pandora.Pattern.Functor.Semimonoidal.Semimonoidal (Pandora.Paradigm.Primary.Algebraic.Exponential.-->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) ((t Pandora.Paradigm.Schemes.TUT.<:<.>:> t') Pandora.Core.Functor.:= u)
+ Pandora.Paradigm.Schemes.TUT: instance (Pandora.Pattern.Functor.Covariant.Covariant (->) (->) t, Pandora.Pattern.Functor.Covariant.Covariant (->) (->) u, Pandora.Pattern.Functor.Covariant.Covariant (->) (->) t', Pandora.Pattern.Functor.Semimonoidal.Semimonoidal (Pandora.Paradigm.Primary.Algebraic.Exponential.-->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) t, Pandora.Pattern.Functor.Semimonoidal.Semimonoidal (Pandora.Paradigm.Primary.Algebraic.Exponential.-->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) t', Pandora.Pattern.Functor.Monoidal.Monoidal (Pandora.Paradigm.Primary.Algebraic.Exponential.-->) (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) u, Pandora.Pattern.Functor.Adjoint.Adjoint (->) (->) t' t) => Pandora.Pattern.Functor.Monoidal.Monoidal (Pandora.Paradigm.Primary.Algebraic.Exponential.-->) (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) ((t Pandora.Paradigm.Schemes.TUT.<:<.>:> t') Pandora.Core.Functor.:= u)
+ Pandora.Paradigm.Schemes.TUT: instance (Pandora.Pattern.Functor.Covariant.Covariant m m t, Pandora.Pattern.Functor.Covariant.Covariant m m u, Pandora.Pattern.Functor.Covariant.Covariant m m t', Pandora.Paradigm.Controlflow.Effect.Interpreted.Interpreted m ((t Pandora.Paradigm.Schemes.TUT.<:<.>:> t') Pandora.Core.Functor.:= u)) => Pandora.Pattern.Functor.Covariant.Covariant m m ((t Pandora.Paradigm.Schemes.TUT.<:<.>:> t') Pandora.Core.Functor.:= u)
+ Pandora.Paradigm.Schemes.TUT: instance forall k1 k2 k3 k4 k5 (ct :: k1) (ct' :: k2) (cu :: k3) (t :: k4 -> *) (t' :: * -> k5) (u :: k5 -> k4). Pandora.Paradigm.Controlflow.Effect.Interpreted.Interpreted (->) (Pandora.Paradigm.Schemes.TUT.TUT ct ct' cu t t' u)
+ Pandora.Paradigm.Schemes.TUVW: instance forall k1 k2 k3 k4 k5 k6 k7 (ct :: k1) (cu :: k2) (cv :: k3) (cw :: k4) (t :: k5 -> *) (u :: k6 -> k5) (v :: k7 -> k6) (w :: * -> k7). Pandora.Paradigm.Controlflow.Effect.Interpreted.Interpreted (->) (Pandora.Paradigm.Schemes.TUVW.TUVW ct cu cv cw t u v w)
+ Pandora.Paradigm.Schemes.T_U: instance forall k1 k2 k3 k4 (ct :: k1) (cu :: k2) (p :: k3 -> k4 -> *) (t :: * -> k3) (u :: * -> k4). Pandora.Paradigm.Controlflow.Effect.Interpreted.Interpreted (->) (Pandora.Paradigm.Schemes.T_U.T_U ct cu p t u)
+ Pandora.Paradigm.Schemes.UT: instance (Pandora.Pattern.Functor.Covariant.Covariant (->) (->) t, Pandora.Pattern.Functor.Covariant.Covariant (->) (->) u, Pandora.Pattern.Functor.Semimonoidal.Semimonoidal (Pandora.Paradigm.Primary.Algebraic.Exponential.-->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) u, Pandora.Pattern.Functor.Monoidal.Monoidal (Pandora.Paradigm.Primary.Algebraic.Exponential.-->) (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) t, Pandora.Pattern.Functor.Monoidal.Monoidal (Pandora.Paradigm.Primary.Algebraic.Exponential.-->) (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) u) => Pandora.Pattern.Functor.Monoidal.Monoidal (Pandora.Paradigm.Primary.Algebraic.Exponential.-->) (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (t Pandora.Paradigm.Schemes.UT.<.:> u)
+ Pandora.Paradigm.Schemes.UT: instance (Pandora.Pattern.Functor.Covariant.Covariant (->) (->) u, Pandora.Pattern.Functor.Semimonoidal.Semimonoidal (Pandora.Paradigm.Primary.Algebraic.Exponential.-->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) t, Pandora.Pattern.Functor.Semimonoidal.Semimonoidal (Pandora.Paradigm.Primary.Algebraic.Exponential.-->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) u) => Pandora.Pattern.Functor.Semimonoidal.Semimonoidal (Pandora.Paradigm.Primary.Algebraic.Exponential.-->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (t Pandora.Paradigm.Schemes.UT.<.:> u)
+ Pandora.Paradigm.Schemes.UT: instance (Pandora.Pattern.Functor.Covariant.Covariant m m t, Pandora.Pattern.Functor.Covariant.Covariant m m u, Pandora.Paradigm.Controlflow.Effect.Interpreted.Interpreted m (t Pandora.Paradigm.Schemes.UT.<.:> u)) => Pandora.Pattern.Functor.Covariant.Covariant m m (t Pandora.Paradigm.Schemes.UT.<.:> u)
+ Pandora.Paradigm.Schemes.UT: instance (Pandora.Pattern.Functor.Traversable.Traversable (->) (->) t, Pandora.Pattern.Functor.Bindable.Bindable (->) t, Pandora.Pattern.Functor.Semimonoidal.Semimonoidal (Pandora.Paradigm.Primary.Algebraic.Exponential.-->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) u, Pandora.Pattern.Functor.Monoidal.Monoidal (Pandora.Paradigm.Primary.Algebraic.Exponential.-->) (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) u, Pandora.Pattern.Functor.Bindable.Bindable (->) u) => Pandora.Pattern.Functor.Bindable.Bindable (->) (t Pandora.Paradigm.Schemes.UT.<.:> u)
+ Pandora.Paradigm.Schemes.UT: instance Pandora.Pattern.Functor.Monoidal.Monoidal (Pandora.Paradigm.Primary.Algebraic.Exponential.-->) (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) t => Pandora.Pattern.Transformer.Liftable.Liftable (->) (Pandora.Paradigm.Schemes.UT.UT Pandora.Pattern.Functor.Covariant.Covariant Pandora.Pattern.Functor.Covariant.Covariant t)
+ Pandora.Paradigm.Schemes.UT: instance forall k1 k2 k3 (ct :: k1) (cu :: k2) (t :: * -> k3) (u :: k3 -> *). Pandora.Paradigm.Controlflow.Effect.Interpreted.Interpreted (->) (Pandora.Paradigm.Schemes.UT.UT ct cu t u)
+ Pandora.Paradigm.Schemes.UTU: instance forall k1 k2 k3 k4 (ct :: k1) (cu :: k2) (t :: k3 -> k4) (u :: k4 -> *) (u' :: * -> k3). Pandora.Paradigm.Controlflow.Effect.Interpreted.Interpreted (->) (Pandora.Paradigm.Schemes.UTU.UTU ct cu t u u')
+ Pandora.Paradigm.Schemes.U_T: instance forall k1 k2 k3 k4 (ct :: k1) (cu :: k2) (t :: * -> k3) (p :: k4 -> k3 -> *) (u :: * -> k4). Pandora.Paradigm.Controlflow.Effect.Interpreted.Interpreted (->) (Pandora.Paradigm.Schemes.U_T.U_T ct cu t p u)
+ Pandora.Paradigm.Structure: instance Pandora.Paradigm.Structure.Ability.Substructure.Substructure 'Pandora.Paradigm.Primary.Functor.Wye.Left (Pandora.Pattern.Morphism.Flip.Flip (Pandora.Paradigm.Primary.Algebraic.Product.:*:) a2)
+ Pandora.Paradigm.Structure.Modification.Comprehension: instance (Pandora.Pattern.Functor.Covariant.Covariant (->) (->) t, Pandora.Pattern.Functor.Monoidal.Monoidal (Pandora.Paradigm.Primary.Algebraic.Exponential.-->) (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) t) => Pandora.Paradigm.Structure.Ability.Morphable.Morphable 'Pandora.Paradigm.Structure.Ability.Morphable.Push (Pandora.Paradigm.Structure.Modification.Comprehension.Comprehension t)
+ Pandora.Paradigm.Structure.Modification.Comprehension: instance (Pandora.Pattern.Functor.Covariant.Covariant (->) (->) t, Pandora.Pattern.Functor.Monoidal.Monoidal (Pandora.Paradigm.Primary.Algebraic.Exponential.-->) (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Sum.:+:) t) => Pandora.Pattern.Functor.Monoidal.Monoidal (Pandora.Paradigm.Primary.Algebraic.Exponential.-->) (->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) (Pandora.Paradigm.Primary.Algebraic.Sum.:+:) (Pandora.Paradigm.Structure.Modification.Comprehension.Comprehension t)
+ Pandora.Paradigm.Structure.Modification.Comprehension: instance (Pandora.Pattern.Functor.Covariant.Covariant (->) (->) t, Pandora.Pattern.Functor.Semimonoidal.Semimonoidal (Pandora.Paradigm.Primary.Algebraic.Exponential.-->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) right t, Pandora.Pattern.Functor.Semimonoidal.Semimonoidal (Pandora.Paradigm.Primary.Algebraic.Exponential.-->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) right (t Pandora.Paradigm.Schemes.TU.<:.> Pandora.Paradigm.Primary.Transformer.Construction.Construction t)) => Pandora.Pattern.Functor.Semimonoidal.Semimonoidal (Pandora.Paradigm.Primary.Algebraic.Exponential.-->) (Pandora.Paradigm.Primary.Algebraic.Product.:*:) right (Pandora.Paradigm.Structure.Modification.Comprehension.Comprehension t)
+ Pandora.Paradigm.Structure.Modification.Comprehension: instance Pandora.Paradigm.Controlflow.Effect.Interpreted.Interpreted (->) (Pandora.Paradigm.Structure.Modification.Comprehension.Comprehension t)
+ Pandora.Paradigm.Structure.Modification.Prefixed: instance Pandora.Paradigm.Controlflow.Effect.Interpreted.Interpreted (->) (Pandora.Paradigm.Structure.Modification.Prefixed.Prefixed t k)
+ Pandora.Paradigm.Structure.Some.Binary: instance Pandora.Pattern.Functor.Traversable.Traversable (->) (->) (Pandora.Paradigm.Primary.Transformer.Construction.Construction Pandora.Paradigm.Primary.Functor.Wye.Wye)
+ Pandora.Pattern.Functor.Contravariant: (>$<) :: Contravariant source target t => source a b -> target (t b) (t a)
+ Pandora.Pattern.Functor.Covariant: (<$$$$>) :: forall source between1 between2 between3 target t u v w a b. (Covariant source between1 w, Covariant between1 between2 v, Covariant between2 between3 u, Covariant between3 target t) => source a b -> target (t (u (v (w a)))) (t (u (v (w b))))
+ Pandora.Pattern.Functor.Covariant: (<$$$>) :: forall source between1 between2 target t u v a b. (Covariant source between1 v, Covariant between1 between2 u, Covariant between2 target t) => source a b -> target (t (u (v a))) (t (u (v b)))
+ Pandora.Pattern.Functor.Covariant: (<$$>) :: forall source between target t u a b. (Covariant source between u, Covariant between target t) => source a b -> target (t (u a)) (t (u b))
+ Pandora.Pattern.Functor.Covariant: (<$>) :: Covariant source target t => source a b -> target (t a) (t b)
+ Pandora.Pattern.Functor.Semimonoidal: mult :: Semimonoidal p source target t => p (source (t a) (t b)) (t (target a b))
+ Pandora.Pattern.Groupoid: class Category m => Groupoid m
+ Pandora.Pattern.Groupoid: inversion :: Groupoid m => m a b -> m b a
+ Pandora.Pattern.Morphism: type family Opposite m
+ Pandora.Pattern.Morphism.Flip: Flip :: v e a -> Flip (v :: * -> * -> *) a e
+ Pandora.Pattern.Morphism.Flip: instance (Pandora.Pattern.Category.Category m, Pandora.Pattern.Functor.Covariant.Covariant m m t) => Pandora.Pattern.Functor.Contravariant.Contravariant (Pandora.Pattern.Morphism.Flip.Flip m) m t
+ Pandora.Pattern.Morphism.Flip: instance (Pandora.Pattern.Category.Category m, Pandora.Pattern.Functor.Covariant.Covariant m m t) => Pandora.Pattern.Functor.Contravariant.Contravariant m (Pandora.Pattern.Morphism.Flip.Flip m) t
+ Pandora.Pattern.Morphism.Flip: instance (Pandora.Pattern.Category.Category m, Pandora.Pattern.Functor.Covariant.Covariant m m t) => Pandora.Pattern.Functor.Covariant.Covariant (Pandora.Pattern.Morphism.Flip.Flip m) (Pandora.Pattern.Morphism.Flip.Flip m) t
+ Pandora.Pattern.Morphism.Flip: instance Pandora.Core.Appliable.Appliable (Pandora.Pattern.Morphism.Flip.Flip m) b c m c b
+ Pandora.Pattern.Morphism.Flip: instance Pandora.Pattern.Category.Category m => Pandora.Pattern.Category.Category (Pandora.Pattern.Morphism.Flip.Flip m)
+ Pandora.Pattern.Morphism.Flip: instance Pandora.Pattern.Semigroupoid.Semigroupoid m => Pandora.Pattern.Semigroupoid.Semigroupoid (Pandora.Pattern.Morphism.Flip.Flip m)
+ Pandora.Pattern.Morphism.Flip: newtype Flip (v :: * -> * -> *) a e
+ Pandora.Pattern.Morphism.Straight: Straight :: v a e -> Straight (v :: * -> * -> *) a e
+ Pandora.Pattern.Morphism.Straight: instance Pandora.Core.Appliable.Appliable (Pandora.Pattern.Morphism.Straight.Straight m) c b m c b
+ Pandora.Pattern.Morphism.Straight: instance Pandora.Pattern.Category.Category m => Pandora.Pattern.Category.Category (Pandora.Pattern.Morphism.Straight.Straight m)
+ Pandora.Pattern.Morphism.Straight: instance Pandora.Pattern.Functor.Covariant.Covariant m m t => Pandora.Pattern.Functor.Covariant.Covariant (Pandora.Pattern.Morphism.Straight.Straight m) (Pandora.Pattern.Morphism.Straight.Straight m) t
+ Pandora.Pattern.Morphism.Straight: instance Pandora.Pattern.Functor.Covariant.Covariant m m t => Pandora.Pattern.Functor.Covariant.Covariant (Pandora.Pattern.Morphism.Straight.Straight m) m t
+ Pandora.Pattern.Morphism.Straight: instance Pandora.Pattern.Functor.Covariant.Covariant m m t => Pandora.Pattern.Functor.Covariant.Covariant m (Pandora.Pattern.Morphism.Straight.Straight m) t
+ Pandora.Pattern.Morphism.Straight: instance Pandora.Pattern.Semigroupoid.Semigroupoid m => Pandora.Pattern.Semigroupoid.Semigroupoid (Pandora.Pattern.Morphism.Straight.Straight m)
+ Pandora.Pattern.Morphism.Straight: newtype Straight (v :: * -> * -> *) a e
- Pandora.Paradigm.Controlflow.Effect.Adaptable: type Bringable t u = (Comonadic t, Extractable_ u)
+ Pandora.Paradigm.Controlflow.Effect.Adaptable: type Bringable t u = (Comonadic t, Extractable u)
- Pandora.Paradigm.Controlflow.Effect.Adaptable: type Wrappable t u = (Monadic t, Monoidal (->) (->) (:*:) (:*:) u)
+ Pandora.Paradigm.Controlflow.Effect.Adaptable: type Wrappable t u = (Monadic t, Monoidal (-->) (->) (:*:) (:*:) u)
- Pandora.Paradigm.Controlflow.Effect.Interpreted: (-=:) :: (Liftable (->) t, Interpreted (t u), Interpreted (t v), Covariant (->) (->) u) => (t u a -> t v b) -> u a -> Primary (t v) b
+ Pandora.Paradigm.Controlflow.Effect.Interpreted: (-=:) :: (Liftable m t, Interpreted m (t u), Interpreted m (t v), Covariant m m u) => m (t u a) (t v b) -> m (u a) (Primary (t v) b)
- Pandora.Paradigm.Controlflow.Effect.Interpreted: (<$$$$||=) :: (Interpreted t, Covariant (->) (->) j, Covariant (->) (->) k, Covariant (->) (->) l, Covariant (->) (->) m, Interpreted u) => (Primary t a -> Primary u b) -> ((j :. (k :. (l :. m))) := t a) -> (j :. (k :. (l :. m))) := u b
+ Pandora.Paradigm.Controlflow.Effect.Interpreted: (<$$$$||=) :: (Interpreted m t, Semigroupoid m, Covariant m m j, Covariant m m k, Covariant m m l, Covariant m m n, Interpreted m u) => m (Primary t a) (Primary u b) -> m ((j :. (k :. (l :. n))) := t a) ((j :. (k :. (l :. n))) := u b)
- Pandora.Paradigm.Controlflow.Effect.Interpreted: (<$$$||=) :: (Interpreted t, Covariant (->) (->) j, Covariant (->) (->) k, Covariant (->) (->) l, Interpreted u) => (Primary t a -> Primary u b) -> ((j :. (k :. l)) := t a) -> (j :. (k :. l)) := u b
+ Pandora.Paradigm.Controlflow.Effect.Interpreted: (<$$$||=) :: (Interpreted m t, Semigroupoid m, Covariant m m j, Covariant m m k, Covariant m m l, Interpreted m u) => m (Primary t a) (Primary u b) -> m ((j :. (k :. l)) := t a) ((j :. (k :. l)) := u b)
- Pandora.Paradigm.Controlflow.Effect.Interpreted: (<$$||=) :: (Interpreted t, Covariant (->) (->) j, Covariant (->) (->) k, Interpreted u) => (Primary t a -> Primary u b) -> ((j :. k) := t a) -> (j :. k) := u b
+ Pandora.Paradigm.Controlflow.Effect.Interpreted: (<$$||=) :: (Interpreted m t, Semigroupoid m, Covariant m m j, Covariant m m k, Interpreted m u) => m (Primary t a) (Primary u b) -> m ((j :. k) := t a) ((j :. k) := u b)
- Pandora.Paradigm.Controlflow.Effect.Interpreted: (<$||=) :: (Interpreted t, Covariant (->) (->) j, Interpreted u) => (Primary t a -> Primary u b) -> (j := t a) -> j := u b
+ Pandora.Paradigm.Controlflow.Effect.Interpreted: (<$||=) :: (Interpreted m t, Semigroupoid m, Covariant m m j, Interpreted m u) => m (Primary t a) (Primary u b) -> m (j := t a) (j := u b)
- Pandora.Paradigm.Controlflow.Effect.Interpreted: (=||$$$$>) :: (Interpreted t, Covariant (->) (->) j, Covariant (->) (->) k, Covariant (->) (->) l, Covariant (->) (->) m, Interpreted u) => (t a -> u b) -> ((j :. (k :. (l :. m))) := Primary t a) -> (j :. (k :. (l :. m))) := Primary u b
+ Pandora.Paradigm.Controlflow.Effect.Interpreted: (=||$$$$>) :: (Interpreted m t, Covariant m m j, Covariant m m k, Covariant m m l, Covariant m m n, Interpreted m u) => m (t a) (u b) -> m ((j :. (k :. (l :. n))) := Primary t a) ((j :. (k :. (l :. n))) := Primary u b)
- Pandora.Paradigm.Controlflow.Effect.Interpreted: (=||$$$>) :: (Interpreted t, Covariant (->) (->) j, Covariant (->) (->) k, Covariant (->) (->) l, Interpreted u) => (t a -> u b) -> ((j :. (k :. l)) := Primary t a) -> (j :. (k :. l)) := Primary u b
+ Pandora.Paradigm.Controlflow.Effect.Interpreted: (=||$$$>) :: (Interpreted m t, Covariant m m j, Covariant m m k, Covariant m m l, Interpreted m u) => m (t a) (u b) -> m ((j :. (k :. l)) := Primary t a) ((j :. (k :. l)) := Primary u b)
- Pandora.Paradigm.Controlflow.Effect.Interpreted: (=||$$>) :: (Interpreted t, Covariant (->) (->) j, Covariant (->) (->) k, Interpreted u) => (t a -> u b) -> ((j :. k) := Primary t a) -> (j :. k) := Primary u b
+ Pandora.Paradigm.Controlflow.Effect.Interpreted: (=||$$>) :: (Interpreted m t, Covariant m m j, Covariant m m k, Interpreted m u) => m (t a) (u b) -> m ((j :. k) := Primary t a) ((j :. k) := Primary u b)
- Pandora.Paradigm.Controlflow.Effect.Interpreted: (=||$>) :: (Interpreted t, Covariant (->) (->) j, Interpreted u) => (t a -> u b) -> (j := Primary t a) -> j := Primary u b
+ Pandora.Paradigm.Controlflow.Effect.Interpreted: (=||$>) :: (Interpreted m t, Covariant m m j, Interpreted m u) => m (t a) (u b) -> m (j := Primary t a) (j := Primary u b)
- Pandora.Paradigm.Controlflow.Effect.Interpreted: (=||) :: (Interpreted t, Interpreted u) => (t a -> u b) -> Primary t a -> Primary u b
+ Pandora.Paradigm.Controlflow.Effect.Interpreted: (=||) :: (Interpreted m t, Semigroupoid m, Interpreted m u) => m (t a) (u b) -> m (Primary t a) (Primary u b)
- Pandora.Paradigm.Controlflow.Effect.Interpreted: (||=) :: (Interpreted t, Interpreted u) => (Primary t a -> Primary u b) -> t a -> u b
+ Pandora.Paradigm.Controlflow.Effect.Interpreted: (||=) :: (Interpreted m t, Semigroupoid m, Interpreted m u) => m (Primary t a) (Primary u b) -> m (t a) (u b)
- Pandora.Paradigm.Controlflow.Effect.Interpreted: class Interpreted t where {
+ Pandora.Paradigm.Controlflow.Effect.Interpreted: class Interpreted m t where {
- Pandora.Paradigm.Controlflow.Effect.Interpreted: run :: Interpreted t => t a -> Primary t a
+ Pandora.Paradigm.Controlflow.Effect.Interpreted: run :: Interpreted m t => m (t a) (Primary t a)
- Pandora.Paradigm.Controlflow.Effect.Interpreted: unite :: Interpreted t => Primary t a -> t a
+ Pandora.Paradigm.Controlflow.Effect.Interpreted: unite :: Interpreted m t => m (Primary t a) (t a)
- Pandora.Paradigm.Controlflow.Effect.Transformer.Comonadic: bring :: (Comonadic t, Extractable_ u) => (t :< u) ~> t
+ Pandora.Paradigm.Controlflow.Effect.Transformer.Comonadic: bring :: (Comonadic t, Extractable u) => (t :< u) ~> t
- Pandora.Paradigm.Controlflow.Effect.Transformer.Comonadic: class Interpreted t => Comonadic t
+ Pandora.Paradigm.Controlflow.Effect.Transformer.Comonadic: class Interpreted (->) t => Comonadic t
- Pandora.Paradigm.Controlflow.Effect.Transformer.Monadic: class Interpreted t => Monadic t
+ Pandora.Paradigm.Controlflow.Effect.Transformer.Monadic: class Interpreted (->) t => Monadic t
- Pandora.Paradigm.Controlflow.Effect.Transformer.Monadic: wrap :: (Monadic t, Monoidal (->) (->) (:*:) (:*:) u) => t ~> (t :> u)
+ Pandora.Paradigm.Controlflow.Effect.Transformer.Monadic: wrap :: (Monadic t, Pointable u) => t ~> (t :> u)
- Pandora.Paradigm.Controlflow.Observable: (*:~*) :: Applicative_ t => Observable t a r -> (a -> t r) -> t r
+ Pandora.Paradigm.Controlflow.Observable: (*:~*) :: Applicative t => Observable t a r -> (a -> t r) -> t r
- Pandora.Paradigm.Controlflow.Observable: (*:~.) :: Applicative_ t => Observable t a r -> (a -> t r) -> t r
+ Pandora.Paradigm.Controlflow.Observable: (*:~.) :: Applicative t => Observable t a r -> (a -> t r) -> t r
- Pandora.Paradigm.Controlflow.Observable: (.:~*) :: Applicative_ t => Observable t a r -> (a -> t r) -> t r
+ Pandora.Paradigm.Controlflow.Observable: (.:~*) :: Applicative t => Observable t a r -> (a -> t r) -> t r
- Pandora.Paradigm.Controlflow.Observable: follow :: Applicative_ t => Observable t a r -> (a -> t r) -> t r
+ Pandora.Paradigm.Controlflow.Observable: follow :: Applicative t => Observable t a r -> (a -> t r) -> t r
- Pandora.Paradigm.Controlflow.Observable: subscribe :: Applicative_ t => Observable t a r -> (a -> t r) -> t r
+ Pandora.Paradigm.Controlflow.Observable: subscribe :: Applicative t => Observable t a r -> (a -> t r) -> t r
- Pandora.Paradigm.Controlflow.Observable: watch :: Applicative_ t => Observable t a r -> (a -> t r) -> t r
+ Pandora.Paradigm.Controlflow.Observable: watch :: Applicative t => Observable t a r -> (a -> t r) -> t r
- Pandora.Paradigm.Controlflow.Pipeline: (=*=) :: forall i e o t. Monoidal (->) (->) (:*:) (:*:) t => Pipeline i e t () () -> Pipeline e o t () () -> Pipeline i o t () ()
+ Pandora.Paradigm.Controlflow.Pipeline: (=*=) :: forall i e o t. Monoidal (-->) (->) (:*:) (:*:) t => Pipeline i e t () () -> Pipeline e o t () () -> Pipeline i o t () ()
- Pandora.Paradigm.Controlflow.Pipeline: finish :: Monoidal (->) (->) (:*:) (:*:) t => Pipeline i o t () ()
+ Pandora.Paradigm.Controlflow.Pipeline: finish :: Monoidal (-->) (->) (:*:) (:*:) t => Pipeline i o t () ()
- Pandora.Paradigm.Controlflow.Pipeline: pipeline :: Monoidal (->) (->) (:*:) (:*:) t => Pipeline i o t () () -> t ()
+ Pandora.Paradigm.Controlflow.Pipeline: pipeline :: Monoidal (-->) (->) (:*:) (:*:) t => Pipeline i o t () () -> t ()
- Pandora.Paradigm.Inventory.State: type Memorable s t = (Covariant (->) (->) t, Monoidal (->) (->) (:*:) (:*:) t, Stateful s t)
+ Pandora.Paradigm.Inventory.State: type Memorable s t = (Covariant (->) (->) t, Pointable t, Stateful s t)
- Pandora.Paradigm.Primary.Algebraic: (*>-) :: (Covariant (->) (->) t, Semimonoidal (->) (:*:) (:*:) t) => t a -> t b -> t b
+ Pandora.Paradigm.Primary.Algebraic: (*>-) :: (Covariant (->) (->) t, Semimonoidal (-->) (:*:) (:*:) t) => t a -> t b -> t b
- Pandora.Paradigm.Primary.Algebraic: (-+-) :: (Covariant (->) (->) t, Semimonoidal (->) (:*:) (:+:) t) => t a -> t b -> ((a :+: b) -> r) -> t r
+ Pandora.Paradigm.Primary.Algebraic: (-+-) :: (Covariant (->) (->) t, Semimonoidal (-->) (:*:) (:+:) t) => t a -> t b -> ((a :+: b) -> r) -> t r
- Pandora.Paradigm.Primary.Algebraic: empty :: Monoidal (->) (->) (:*:) (:+:) t => t a
+ Pandora.Paradigm.Primary.Algebraic: empty :: Emptiable t => t a
- Pandora.Paradigm.Primary.Algebraic: extract :: Extractable_ t => t a -> a
+ Pandora.Paradigm.Primary.Algebraic: extract :: Extractable t => t a -> a
- Pandora.Paradigm.Primary.Algebraic: forever_ :: (Covariant (->) (->) t, Semimonoidal (->) (:*:) (:*:) t) => t a -> t b
+ Pandora.Paradigm.Primary.Algebraic: forever_ :: (Covariant (->) (->) t, Semimonoidal (-->) (:*:) (:*:) t) => t a -> t b
- Pandora.Paradigm.Primary.Algebraic: infixl 4 -<*>-
+ Pandora.Paradigm.Primary.Algebraic: infixl 4 <-*-
- Pandora.Paradigm.Primary.Algebraic: point :: Monoidal (->) (->) (:*:) (:*:) t => a -> t a
+ Pandora.Paradigm.Primary.Algebraic: point :: Pointable t => a -> t a
- Pandora.Paradigm.Primary.Algebraic.Exponential: type (<--) = Flip (->)
+ Pandora.Paradigm.Primary.Algebraic.Exponential: type (-->) = Straight (->)
- Pandora.Paradigm.Primary.Transformer.Construction: section :: (Comonad t (->), Monoidal (<--) (->) (:*:) (:*:) t) => t ~> Construction t
+ Pandora.Paradigm.Primary.Transformer.Construction: section :: (Comonad (->) t, Monoidal (<--) (->) (:*:) (:*:) t) => t ~> Construction t
- Pandora.Paradigm.Primary.Transformer.Continuation: interruptable :: Monoidal (->) (->) (:*:) (:*:) t => ((a -> Continuation a t a) -> Continuation a t a) -> t a
+ Pandora.Paradigm.Primary.Transformer.Continuation: interruptable :: Monoidal (-->) (->) (:*:) (:*:) t => ((a -> Continuation a t a) -> Continuation a t a) -> t a
- Pandora.Paradigm.Primary.Transformer.Continuation: reset :: (forall u. Bindable (->) u, Monad t) => Continuation r t r -> Continuation s t r
+ Pandora.Paradigm.Primary.Transformer.Continuation: reset :: (forall u. Bindable (->) u, Monad (->) t) => Continuation r t r -> Continuation s t r
- Pandora.Paradigm.Primary.Transformer.Continuation: shift :: Monoidal (->) (->) (:*:) (:*:) t => ((a -> t r) -> Continuation r t r) -> Continuation r t a
+ Pandora.Paradigm.Primary.Transformer.Continuation: shift :: Monoidal (-->) (->) (:*:) (:*:) t => ((a -> t r) -> Continuation r t r) -> Continuation r t a
- Pandora.Pattern.Functor.Comonad: class (Monoidal (<--) source (:*:) (:*:) t, Extendable source t) => Comonad t source
+ Pandora.Pattern.Functor.Comonad: class (Monoidal (<--) source (:*:) (:*:) t, Extendable source t) => Comonad source t
- Pandora.Pattern.Functor.Contravariant: infixl 4 ->$<-
+ Pandora.Pattern.Functor.Contravariant: infixl 4 >$<
- Pandora.Pattern.Functor.Covariant: infixl 3 -<$$>>-
+ Pandora.Pattern.Functor.Covariant: infixl 3 <$$>
- Pandora.Pattern.Functor.Covariant: infixl 4 -<$>-
+ Pandora.Pattern.Functor.Covariant: infixl 4 <$$$>
- Pandora.Pattern.Functor.Monad: class (Covariant (->) (->) t, Monoidal (->) (->) (:*:) (:*:) t, Bindable (->) t) => Monad t
+ Pandora.Pattern.Functor.Monad: class (Covariant category category t, Monoidal (Straight category) category (:*:) (:*:) t, Bindable category t) => Monad category t
- Pandora.Pattern.Functor.Monoidal: class Semimonoidal p source target t => Monoidal p q source target t
+ Pandora.Pattern.Functor.Monoidal: class Semimonoidal p source target t => Monoidal p q source target t | p target -> source
- Pandora.Pattern.Functor.Semimonoidal: class Semigroupoid p => Semimonoidal p source target t
+ Pandora.Pattern.Functor.Semimonoidal: class Semigroupoid p => Semimonoidal p source target t | p target -> source
- Pandora.Pattern.Functor.Traversable: (-<<-<<-) :: forall t u v category a b. (Traversable category category t, Covariant category category u, Monoidal category category (:*:) (:*:) u, Traversable category category v) => category a (u b) -> category (v (t a)) (u (v (t b)))
+ Pandora.Pattern.Functor.Traversable: (-<<-<<-) :: forall t u v category a b. (Traversable category category t, Covariant category category u, Monoidal (Straight category) category (:*:) (:*:) u, Traversable category category v) => category a (u b) -> category (v (t a)) (u (v (t b)))
- Pandora.Pattern.Functor.Traversable: (<<-) :: (Traversable source target t, Covariant source target u, Monoidal source target (:*:) (:*:) u) => source a (u b) -> target (t a) (u (t b))
+ Pandora.Pattern.Functor.Traversable: (<<-) :: (Traversable source target t, Covariant source target u, Monoidal (Straight source) target (:*:) (:*:) u) => source a (u b) -> target (t a) (u (t b))
Files
- CHANGELOG.md +22/−0
- Pandora/Core.hs +1/−0
- Pandora/Core/Appliable.hs +6/−0
- Pandora/Paradigm/Controlflow/Effect/Adaptable.hs +13/−12
- Pandora/Paradigm/Controlflow/Effect/Interpreted.hs +46/−34
- Pandora/Paradigm/Controlflow/Effect/Transformer.hs +5/−5
- Pandora/Paradigm/Controlflow/Effect/Transformer/Comonadic.hs +16/−13
- Pandora/Paradigm/Controlflow/Effect/Transformer/Monadic.hs +16/−13
- Pandora/Paradigm/Controlflow/Observable.hs +7/−7
- Pandora/Paradigm/Controlflow/Pipeline.hs +6/−6
- Pandora/Paradigm/Inventory/Accumulator.hs +8/−6
- Pandora/Paradigm/Inventory/Environment.hs +18/−15
- Pandora/Paradigm/Inventory/Equipment.hs +5/−5
- Pandora/Paradigm/Inventory/Imprint.hs +8/−8
- Pandora/Paradigm/Inventory/Optics.hs +7/−3
- Pandora/Paradigm/Inventory/State.hs +18/−16
- Pandora/Paradigm/Inventory/Store.hs +12/−10
- Pandora/Paradigm/Primary.hs +10/−9
- Pandora/Paradigm/Primary/Algebraic.hs +56/−45
- Pandora/Paradigm/Primary/Algebraic/Exponential.hs +20/−12
- Pandora/Paradigm/Primary/Algebraic/Product.hs +13/−13
- Pandora/Paradigm/Primary/Algebraic/Sum.hs +6/−6
- Pandora/Paradigm/Primary/Functor/Conclusion.hs +24/−21
- Pandora/Paradigm/Primary/Functor/Constant.hs +6/−6
- Pandora/Paradigm/Primary/Functor/Convergence.hs +2/−2
- Pandora/Paradigm/Primary/Functor/Edges.hs +8/−8
- Pandora/Paradigm/Primary/Functor/Endo.hs +1/−1
- Pandora/Paradigm/Primary/Functor/Fix.hs +3/−3
- Pandora/Paradigm/Primary/Functor/Identity.hs +17/−15
- Pandora/Paradigm/Primary/Functor/Maybe.hs +24/−21
- Pandora/Paradigm/Primary/Functor/Predicate.hs +3/−3
- Pandora/Paradigm/Primary/Functor/Proxy.hs +4/−4
- Pandora/Paradigm/Primary/Functor/Tagged.hs +16/−15
- Pandora/Paradigm/Primary/Functor/These.hs +6/−6
- Pandora/Paradigm/Primary/Functor/Validation.hs +30/−27
- Pandora/Paradigm/Primary/Functor/Wedge.hs +5/−5
- Pandora/Paradigm/Primary/Functor/Wye.hs +8/−8
- Pandora/Paradigm/Primary/Transformer.hs +0/−8
- Pandora/Paradigm/Primary/Transformer/Backwards.hs +16/−18
- Pandora/Paradigm/Primary/Transformer/Construction.hs +26/−20
- Pandora/Paradigm/Primary/Transformer/Continuation.hs +8/−7
- Pandora/Paradigm/Primary/Transformer/Day.hs +2/−2
- Pandora/Paradigm/Primary/Transformer/Flip.hs +0/−3
- Pandora/Paradigm/Primary/Transformer/Instruction.hs +24/−20
- Pandora/Paradigm/Primary/Transformer/Jack.hs +7/−7
- Pandora/Paradigm/Primary/Transformer/Jet.hs +4/−4
- Pandora/Paradigm/Primary/Transformer/Kan.hs +6/−6
- Pandora/Paradigm/Primary/Transformer/Outline.hs +3/−3
- Pandora/Paradigm/Primary/Transformer/Reverse.hs +16/−16
- Pandora/Paradigm/Primary/Transformer/Tap.hs +19/−17
- Pandora/Paradigm/Primary/Transformer/Yoneda.hs +3/−3
- Pandora/Paradigm/Schemes/PQ_.hs +1/−1
- Pandora/Paradigm/Schemes/PTU.hs +1/−1
- Pandora/Paradigm/Schemes/P_Q_T.hs +1/−1
- Pandora/Paradigm/Schemes/P_T.hs +1/−1
- Pandora/Paradigm/Schemes/TU.hs +23/−24
- Pandora/Paradigm/Schemes/TUT.hs +17/−19
- Pandora/Paradigm/Schemes/TUVW.hs +1/−1
- Pandora/Paradigm/Schemes/T_U.hs +6/−6
- Pandora/Paradigm/Schemes/UT.hs +20/−21
- Pandora/Paradigm/Schemes/UTU.hs +1/−1
- Pandora/Paradigm/Schemes/U_T.hs +1/−1
- Pandora/Paradigm/Structure.hs +3/−3
- Pandora/Paradigm/Structure/Ability.hs +0/−1
- Pandora/Paradigm/Structure/Ability/Measurable.hs +0/−15
- Pandora/Paradigm/Structure/Ability/Substructure.hs +2/−2
- Pandora/Paradigm/Structure/Interface/Set.hs +1/−1
- Pandora/Paradigm/Structure/Modification/Comprehension.hs +16/−15
- Pandora/Paradigm/Structure/Modification/Prefixed.hs +7/−7
- Pandora/Paradigm/Structure/Some/Binary.hs +29/−39
- Pandora/Paradigm/Structure/Some/List.hs +19/−30
- Pandora/Paradigm/Structure/Some/Rose.hs +2/−2
- Pandora/Paradigm/Structure/Some/Splay.hs +10/−10
- Pandora/Paradigm/Structure/Some/Stream.hs +2/−2
- Pandora/Pattern.hs +2/−0
- Pandora/Pattern/Category.hs +1/−1
- Pandora/Pattern/Functor/Bivariant.hs +2/−2
- Pandora/Pattern/Functor/Comonad.hs +1/−1
- Pandora/Pattern/Functor/Contravariant.hs +4/−4
- Pandora/Pattern/Functor/Covariant.hs +19/−29
- Pandora/Pattern/Functor/Distributive.hs +1/−1
- Pandora/Pattern/Functor/Divariant.hs +2/−2
- Pandora/Pattern/Functor/Extendable.hs +2/−2
- Pandora/Pattern/Functor/Monad.hs +2/−1
- Pandora/Pattern/Functor/Monoidal.hs +1/−1
- Pandora/Pattern/Functor/Semimonoidal.hs +2/−2
- Pandora/Pattern/Functor/Traversable.hs +5/−4
- Pandora/Pattern/Groupoid.hs +11/−0
- Pandora/Pattern/Morphism.hs +8/−0
- Pandora/Pattern/Morphism/Flip.hs +27/−0
- Pandora/Pattern/Morphism/Straight.hs +26/−0
- Pandora/Pattern/Transformer/Hoistable.hs +2/−5
- pandora.cabal +6/−3
CHANGELOG.md view
@@ -583,3 +583,25 @@ * Rearrange type parameters in `Divariant` typeclass * Generalize `Liftable` typeclass * Generalize `Lowerable` typeclass++# 0.4.7+* Remove `hoist` method from `Hoistable` typeclass+* Rename `-<$>-` method to `<$>` in `Covariant` typeclasss+* Rename `->$<-` method to `>$<` in `Contravariant` typeclass+* Define `Straight` transformer+* Define `-->` type synonymous+* Define `Opposite` type family+* Define experimental `Appliable` typeclass+* Rename `multiply` method to `mult` in `Semimonoidal` typeclass+* Generalize `Interpreted` typeclass+* Define `Groupoid` typeclass+* Remove `Measurable` typeclass+* Rename `Applicative_` typeclass to `Applicative`+* Rename `Alternative_` typeclass to `Alternative`+* Rename `-<*>-` method of Applicative to `<-*-`+* Add functional dependencies to `Appliable` typeclass+* Remove `-<$$>-`, `-<<$>-`, `-<$$>>-` in favor of `<$$>`+* Remove `-<$$$>-` in favor of `<$$$>`+* Remove `-<$$$$>-` in favor of `<$$$$>`++# 0.4.8
Pandora/Core.hs view
@@ -1,4 +1,5 @@ module Pandora.Core (module Exports) where import Pandora.Core.Impliable as Exports+import Pandora.Core.Appliable as Exports import Pandora.Core.Functor as Exports
+ Pandora/Core/Appliable.hs view
@@ -0,0 +1,6 @@+module Pandora.Core.Appliable where++infixr 0 !++class Appliable m a b n c d | m a b -> n c d where+ (!) :: m a b -> n c d
Pandora/Paradigm/Controlflow/Effect/Adaptable.hs view
@@ -9,9 +9,10 @@ import Pandora.Pattern.Functor.Monoidal (Monoidal) import Pandora.Pattern.Functor.Comonad (Comonad) import Pandora.Pattern.Functor.Monad (Monad)-import Pandora.Pattern.Transformer (Liftable (lift), Lowerable (lower), Hoistable (hoist))+import Pandora.Pattern.Transformer (Liftable (lift), Lowerable (lower), Hoistable ((/|\)))+import Pandora.Paradigm.Primary.Algebraic.Exponential (type (-->)) import Pandora.Paradigm.Primary.Algebraic.Product ((:*:))-import Pandora.Paradigm.Primary.Algebraic (Extractable_)+import Pandora.Paradigm.Primary.Algebraic (Extractable) import Pandora.Paradigm.Controlflow.Effect.Interpreted (Schematic) import Pandora.Paradigm.Controlflow.Effect.Transformer (Monadic, Comonadic, wrap, bring, (:>), (:<)) @@ -21,8 +22,8 @@ type Lifting t u = (Monadic t, Liftable (->) (Schematic Monad t), Covariant (->) (->) u) type Lowering t u = (Comonadic t, Lowerable (->) (Schematic Comonad t), Covariant (->) (->) u)-type Wrappable t u = (Monadic t, Monoidal (->) (->) (:*:) (:*:) u)-type Bringable t u = (Comonadic t, Extractable_ u)+type Wrappable t u = (Monadic t, Monoidal (-->) (->) (:*:) (:*:) u)+type Bringable t u = (Comonadic t, Extractable u) instance Adaptable t t where adapt = identity@@ -296,7 +297,7 @@ adapt = bring . lower . lower . lower . lower . lower . lower . lower instance (Covariant (->) (->) u, Hoistable ((:>) t), Adaptable u u') => Adaptable (t :> u) (t :> u') where- adapt = hoist adapt+ adapt = (adapt /|\) instance ( Covariant (->) (->) v@@ -306,7 +307,7 @@ , Hoistable (Schematic Monad u) , Adaptable v v' ) => Adaptable (t :> u :> v) (t :> u :> v') where- adapt = hoist (hoist adapt)+ adapt = ((adapt /|\) /|\) instance ( Covariant (->) (->) u@@ -321,7 +322,7 @@ , Hoistable (Schematic Monad v) , Adaptable w w' ) => Adaptable (t :> u :> v :> w) (t :> u :> v :> w') where- adapt = hoist (hoist (hoist adapt))+ adapt = (((adapt /|\) /|\) /|\) instance ( Covariant (->) (->) x@@ -335,7 +336,7 @@ , Hoistable (Schematic Monad w) , Adaptable x x' ) => Adaptable (t :> u :> v :> w :> x) (t :> u :> v :> w :> x') where- adapt = hoist (hoist (hoist (hoist adapt)))+ adapt = (((adapt /|\) /|\) /|\) instance ( Covariant (->) (->) y@@ -351,7 +352,7 @@ , Hoistable (Schematic Monad x) , Adaptable y y' ) => Adaptable (t :> u :> v :> w :> x :> y) (t :> u :> v :> w :> x :> y') where- adapt = hoist (hoist (hoist (hoist (hoist adapt))))+ adapt = ((((adapt /|\) /|\) /|\) /|\) instance ( Covariant (->) (->) z@@ -370,7 +371,7 @@ , Adaptable z z' ) => Adaptable (t :> u :> v :> w :> x :> y :> z) (t :> u :> v :> w :> x :> y :> z') where- adapt = hoist (hoist (hoist (hoist (hoist adapt))))+ adapt = (((((adapt /|\) /|\) /|\) /|\) /|\) instance ( Covariant (->) (->) f@@ -391,7 +392,7 @@ , Adaptable f f' ) => Adaptable (t :> u :> v :> w :> x :> y :> z :> f) (t :> u :> v :> w :> x :> y :> z :> f') where- adapt = hoist (hoist (hoist (hoist (hoist (hoist adapt)))))+ adapt = ((((((adapt /|\) /|\) /|\) /|\) /|\) /|\) instance ( Covariant (->) (->) h@@ -414,4 +415,4 @@ , Adaptable h h' ) => Adaptable (t :> u :> v :> w :> x :> y :> z :> f :> h) (t :> u :> v :> w :> x :> y :> z :> f :> h') where- adapt = hoist (hoist (hoist (hoist (hoist (hoist (hoist adapt))))))+ adapt = (((((((adapt /|\) /|\) /|\) /|\) /|\) /|\) /|\)
Pandora/Paradigm/Controlflow/Effect/Interpreted.hs view
@@ -1,59 +1,71 @@ module Pandora.Paradigm.Controlflow.Effect.Interpreted where +import Pandora.Pattern.Morphism.Straight (Straight (Straight))+import Pandora.Pattern.Morphism.Flip (Flip (Flip)) import Pandora.Core.Functor (type (:.), type (:=))-import Pandora.Pattern.Semigroupoid ((.))-import Pandora.Pattern.Functor.Covariant (Covariant ((-<$>-)), (-<$$>-), (-<$$$>-), (-<$$$$>-))+import Pandora.Pattern.Semigroupoid (Semigroupoid ((.)))+import Pandora.Pattern.Functor.Covariant (Covariant ((<$>)), (<$$>), (<$$$>), (<$$$$>)) import Pandora.Pattern.Transformer.Liftable (Liftable (lift)) import Pandora.Paradigm.Primary.Algebraic.Exponential () infixr 2 ||=, =|| -type family Schematic (c :: (* -> *) -> k) (t :: * -> *) = (r :: (* -> *) -> * -> *) | r -> t+type family Schematic (c :: (* -> * -> *) -> (* -> *) -> k) (t :: * -> *) = (r :: (* -> *) -> * -> *) | r -> t -class Interpreted t where+class Interpreted m t where {-# MINIMAL run, unite #-} type Primary t a :: *- run :: t a -> Primary t a- unite :: Primary t a -> t a+ run :: m (t a) (Primary t a)+ unite :: m (Primary t a) (t a) - (||=) :: Interpreted u => (Primary t a -> Primary u b) -> t a -> u b+ (||=) :: (Semigroupoid m, Interpreted m u) => m (Primary t a) (Primary u b) -> m (t a) (u b) (||=) f = unite . f . run - (=||) :: Interpreted u => (t a -> u b) -> Primary t a -> Primary u b+ (=||) :: (Semigroupoid m, Interpreted m u) => m (t a) (u b) -> m (Primary t a) (Primary u b) (=||) f = run . f . unite - (<$||=) :: (Covariant (->) (->) j, Interpreted u)- => (Primary t a -> Primary u b) -> j := t a -> j := u b- f <$||= x = (f ||=) -<$>- x+ (<$||=) :: (Semigroupoid m, Covariant m m j, Interpreted m u)+ => m (Primary t a) (Primary u b) -> m (j := t a) (j := u b)+ (<$||=) f = (<$>) ((||=) f) - (<$$||=) :: (Covariant (->) (->) j, Covariant (->) (->) k, Interpreted u)- => (Primary t a -> Primary u b) -> j :. k := t a -> j :. k := u b- f <$$||= x = (f ||=) -<$$>- x+ (<$$||=) :: (Semigroupoid m, Covariant m m j, Covariant m m k, Interpreted m u)+ => m (Primary t a) (Primary u b) -> m (j :. k := t a) (j :. k := u b)+ (<$$||=) f = (<$$>) @m @m ((||=) f) - (<$$$||=) :: (Covariant (->) (->) j, Covariant (->) (->) k, Covariant (->) (->) l, Interpreted u)- => (Primary t a -> Primary u b) -> j :. k :. l := t a -> j :. k :. l := u b- f <$$$||= x = (f ||=) -<$$$>- x+ (<$$$||=) :: (Semigroupoid m, Covariant m m j, Covariant m m k, Covariant m m l, Interpreted m u)+ => m (Primary t a) (Primary u b) -> m (j :. k :. l := t a) (j :. k :. l := u b)+ (<$$$||=) f = (<$$$>) @m @m @m ((||=) f) - (<$$$$||=) :: (Covariant (->) (->) j, Covariant (->) (->) k, Covariant (->) (->) l, Covariant (->) (->) m, Interpreted u)- => (Primary t a -> Primary u b) -> j :. k :. l :. m := t a -> j :. k :. l :. m := u b- f <$$$$||= x = (f ||=) -<$$$$>- x+ (<$$$$||=) :: (Semigroupoid m, Covariant m m j, Covariant m m k, Covariant m m l, Covariant m m n, Interpreted m u)+ => m (Primary t a) (Primary u b) -> m (j :. k :. l :. n := t a) (j :. k :. l :. n := u b)+ (<$$$$||=) f = (<$$$$>) @m @m @m @m ((||=) f) - (=||$>) :: (Covariant (->) (->) j, Interpreted u)- => (t a -> u b) -> j := Primary t a -> j := Primary u b- f =||$> x = (f =||) -<$>- x+ (=||$>) :: (Covariant m m j, Interpreted m u)+ => m (t a) (u b) -> m (j := Primary t a) (j := Primary u b)+ (=||$>) f = (<$>) ((=||) f) - (=||$$>) :: (Covariant (->) (->) j, Covariant (->) (->) k, Interpreted u)- => (t a -> u b) -> j :. k := Primary t a -> j :. k := Primary u b- f =||$$> x = (f =||) -<$$>- x+ (=||$$>) :: (Covariant m m j, Covariant m m k, Interpreted m u)+ => m (t a) (u b) -> m (j :. k := Primary t a) (j :. k := Primary u b)+ (=||$$>) f = (<$$>) @m @m ((=||) f) - (=||$$$>) :: (Covariant (->) (->) j, Covariant (->) (->) k, Covariant (->) (->) l, Interpreted u)- => (t a -> u b) -> j :. k :. l := Primary t a -> j :. k :. l := Primary u b- f =||$$$> x = (f =||) -<$$$>- x+ (=||$$$>) :: (Covariant m m j, Covariant m m k, Covariant m m l, Interpreted m u)+ => m (t a) (u b) -> m (j :. k :. l := Primary t a) (j :. k :. l := Primary u b)+ (=||$$$>) f = (<$$$>) @m @m @m ((=||) f) - (=||$$$$>) :: (Covariant (->) (->) j, Covariant (->) (->) k, Covariant (->) (->) l, Covariant (->) (->) m, Interpreted u)- => (t a -> u b) -> j :. k :. l :. m := Primary t a -> j :. k :. l :. m := Primary u b- f =||$$$$> x = (f =||) -<$$$$>- x+ (=||$$$$>) :: (Covariant m m j, Covariant m m k, Covariant m m l, Covariant m m n, Interpreted m u)+ => m (t a) (u b) -> m (j :. k :. l :. n := Primary t a) (j :. k :. l :. n := Primary u b)+ (=||$$$$>) f = (<$$$$>) @m @m @m @m ((=||) f) -(-=:) :: (Liftable (->) t, Interpreted (t u), Interpreted (t v), Covariant (->) (->) u)- => (t u a -> t v b) -> u a -> Primary (t v) b+(-=:) :: (Liftable m t, Interpreted m (t u), Interpreted m (t v), Covariant m m u)+ => m (t u a) (t v b) -> m (u a) (Primary (t v) b) (-=:) f = run . f . lift++instance Interpreted (->) (Flip v a) where+ type Primary (Flip v a) e = v e a+ run ~(Flip x) = x+ unite = Flip++instance Interpreted (->) (Straight v e) where+ type Primary (Straight v e) a = v e a+ run ~(Straight x) = x+ unite = Straight
Pandora/Paradigm/Controlflow/Effect/Transformer.hs view
@@ -1,10 +1,10 @@-module Pandora.Paradigm.Controlflow.Effect.Transformer (module Exports) where+module Pandora.Paradigm.Controlflow.Effect.Transformer (module Exports, Transformer) where import Pandora.Paradigm.Controlflow.Effect.Transformer.Comonadic as Exports import Pandora.Paradigm.Controlflow.Effect.Transformer.Monadic as Exports ---import Pandora.Pattern.Functor (Monad, Comonad)+import Pandora.Pattern.Functor (Monad, Comonad) ---type family Transformer c t where--- Transformer Monad t = Monadic t--- Transformer Comonad t = Comonadic t+type family Transformer c t where+ Transformer Monad t = Monadic t+ Transformer Comonad t = Comonadic t
Pandora/Paradigm/Controlflow/Effect/Transformer/Comonadic.hs view
@@ -2,11 +2,13 @@ module Pandora.Paradigm.Controlflow.Effect.Transformer.Comonadic (Comonadic (..), (:<) (..)) where +import Pandora.Core.Appliable ((!)) import Pandora.Core.Functor (type (~>)) import Pandora.Pattern.Semigroupoid ((.)) import Pandora.Pattern.Category (($))-import Pandora.Pattern.Functor.Covariant (Covariant ((-<$>-)))-import Pandora.Pattern.Functor.Semimonoidal (Semimonoidal (multiply))+import Pandora.Pattern.Morphism.Straight (Straight (Straight))+import Pandora.Pattern.Functor.Covariant (Covariant ((<$>)))+import Pandora.Pattern.Functor.Semimonoidal (Semimonoidal (mult)) import Pandora.Pattern.Functor.Monoidal (Monoidal (unit)) import Pandora.Pattern.Functor.Distributive (Distributive ((-<<))) import Pandora.Pattern.Functor.Traversable (Traversable ((<<-)))@@ -15,29 +17,30 @@ import Pandora.Pattern.Functor.Comonad (Comonad) import Pandora.Pattern.Transformer.Lowerable (Lowerable (lower)) import Pandora.Pattern.Transformer.Hoistable (Hoistable ((/|\)))+import Pandora.Paradigm.Primary.Algebraic.Exponential (type (<--), type (-->)) import Pandora.Paradigm.Primary.Algebraic.Product ((:*:)((:*:))) import Pandora.Paradigm.Primary.Algebraic.One (One (One))-import Pandora.Paradigm.Primary.Algebraic (Extractable_, point)+import Pandora.Paradigm.Primary.Algebraic (Extractable, point) import Pandora.Paradigm.Controlflow.Effect.Interpreted (Schematic, Interpreted (Primary, run, unite)) -class Interpreted t => Comonadic t where+class Interpreted (->) t => Comonadic t where {-# MINIMAL bring #-}- bring :: Extractable_ u => t :< u ~> t+ bring :: Extractable u => t :< u ~> t infixr 3 :< newtype (:<) t u a = TC { tc :: Schematic Comonad t u a } instance Covariant (->) (->) (Schematic Comonad t u) => Covariant (->) (->) (t :< u) where- f -<$>- TC x = TC $ f -<$>- x+ f <$> TC x = TC $ f <$> x -instance Semimonoidal (->) (:*:) (:*:) (Schematic Comonad t u) => Semimonoidal (->) (:*:) (:*:) (t :< u) where- multiply (TC f :*: TC x) = TC $ multiply $ f :*: x+instance Semimonoidal (-->) (:*:) (:*:) (Schematic Comonad t u) => Semimonoidal (-->) (:*:) (:*:) (t :< u) where+ mult = Straight $ \(TC f :*: TC x) -> TC $ mult @(-->) @(:*:) @(:*:) ! f :*: x -instance Monoidal (->) (->) (:*:) (:*:) (Schematic Comonad t u) => Monoidal (->) (->) (:*:) (:*:) (t :< u) where- unit _ f = TC . point $ f One+instance Monoidal (-->) (->) (:*:) (:*:) (Schematic Comonad t u) => Monoidal (-->) (->) (:*:) (:*:) (t :< u) where+ unit _ = Straight $ TC . point . ($ One) instance Traversable (->) (->) (Schematic Comonad t u) => Traversable (->) (->) (t :< u) where- f <<- TC x = TC -<$>- f <<- x+ f <<- TC x = TC <$> f <<- x instance Distributive (->) (->) (Schematic Comonad t u) => Distributive (->) (->) (t :< u) where f -<< x = TC $ tc . f -<< x@@ -48,7 +51,7 @@ instance Extendable (->) (Schematic Comonad t u) => Extendable (->) (t :< u) where f <<= TC x = TC $ f . TC <<= x -instance (Extractable_ (t :< u), Extendable (->) (t :< u)) => Comonad (t :< u) (->) where+instance (Extractable (t :< u), Extendable (->) (t :< u)) => Comonad (->) (t :< u) where instance Lowerable (->) (Schematic Comonad t) => Lowerable (->) ((:<) t) where lower (TC x) = lower x@@ -56,7 +59,7 @@ instance Hoistable (Schematic Comonad t) => Hoistable ((:<) t) where f /|\ TC x = TC $ f /|\ x -instance (Interpreted (Schematic Comonad t u)) => Interpreted (t :< u) where+instance (Interpreted (->) (Schematic Comonad t u)) => Interpreted (->) (t :< u) where type Primary (t :< u) a = Primary (Schematic Comonad t u) a run ~(TC x) = run x unite = TC . unite
Pandora/Paradigm/Controlflow/Effect/Transformer/Monadic.hs view
@@ -2,11 +2,13 @@ module Pandora.Paradigm.Controlflow.Effect.Transformer.Monadic (Monadic (..), (:>) (..)) where +import Pandora.Core.Appliable ((!)) import Pandora.Core.Functor (type (~>))+import Pandora.Pattern.Morphism.Straight (Straight (Straight)) import Pandora.Pattern.Semigroupoid ((.)) import Pandora.Pattern.Category (($))-import Pandora.Pattern.Functor.Covariant (Covariant ((-<$>-)))-import Pandora.Pattern.Functor.Semimonoidal (Semimonoidal (multiply))+import Pandora.Pattern.Functor.Covariant (Covariant ((<$>)))+import Pandora.Pattern.Functor.Semimonoidal (Semimonoidal (mult)) import Pandora.Pattern.Functor.Monoidal (Monoidal (unit)) import Pandora.Pattern.Functor.Distributive (Distributive ((-<<))) import Pandora.Pattern.Functor.Traversable (Traversable ((<<-)))@@ -15,29 +17,30 @@ import Pandora.Pattern.Functor.Monad (Monad) import Pandora.Pattern.Transformer.Liftable (Liftable (lift)) import Pandora.Pattern.Transformer.Hoistable (Hoistable ((/|\)))+import Pandora.Paradigm.Primary.Algebraic.Exponential (type (-->)) import Pandora.Paradigm.Primary.Algebraic.Product ((:*:)((:*:))) import Pandora.Paradigm.Primary.Algebraic.One (One (One))-import Pandora.Paradigm.Primary.Algebraic (point)+import Pandora.Paradigm.Primary.Algebraic (Pointable, point) import Pandora.Paradigm.Controlflow.Effect.Interpreted (Schematic, Interpreted (Primary, run, unite)) -class Interpreted t => Monadic t where+class Interpreted (->) t => Monadic t where {-# MINIMAL wrap #-}- wrap :: Monoidal (->) (->) (:*:) (:*:) u => t ~> t :> u+ wrap :: Pointable u => t ~> t :> u infixr 3 :> newtype (:>) t u a = TM { tm :: Schematic Monad t u a } instance Covariant (->) (->) (Schematic Monad t u) => Covariant (->) (->) (t :> u) where- f -<$>- TM x = TM $ f -<$>- x+ f <$> TM x = TM $ f <$> x -instance Semimonoidal (->) (:*:) (:*:) (Schematic Monad t u) => Semimonoidal (->) (:*:) (:*:) (t :> u) where- multiply (TM f :*: TM x) = TM $ multiply $ f :*: x+instance Semimonoidal (-->) (:*:) (:*:) (Schematic Monad t u) => Semimonoidal (-->) (:*:) (:*:) (t :> u) where+ mult = Straight $ \(TM f :*: TM x) -> TM $ mult @(-->) @(:*:) @(:*:) ! f :*: x -instance Monoidal (->) (->) (:*:) (:*:) (Schematic Monad t u) => Monoidal (->) (->) (:*:) (:*:) (t :> u) where- unit _ f = TM . point $ f One+instance Monoidal (-->) (->) (:*:) (:*:) (Schematic Monad t u) => Monoidal (-->) (->) (:*:) (:*:) (t :> u) where+ unit _ = Straight $ TM . point . ($ One) instance Traversable (->) (->) (Schematic Monad t u) => Traversable (->) (->) (t :> u) where- f <<- TM x = TM -<$>- f <<- x+ f <<- TM x = TM <$> f <<- x instance Distributive (->) (->) (Schematic Monad t u) => Distributive (->) (->) (t :> u) where f -<< x = TM $ tm . f -<< x@@ -48,7 +51,7 @@ instance Extendable (->) (Schematic Monad t u) => Extendable (->) (t :> u) where f <<= TM x = TM $ f . TM <<= x -instance (Covariant (->) (->) (Schematic Monad t u), Monoidal (->) (->) (:*:) (:*:) (Schematic Monad t u), Bindable (->) (t :> u)) => Monad (t :> u) where+instance (Covariant (->) (->) (Schematic Monad t u), Monoidal (-->) (->) (:*:) (:*:) (Schematic Monad t u), Bindable (->) (t :> u)) => Monad (->) (t :> u) where instance Liftable (->) (Schematic Monad t) => Liftable (->) ((:>) t) where lift = TM . lift@@ -56,7 +59,7 @@ instance Hoistable (Schematic Monad t) => Hoistable ((:>) t) where f /|\ TM x = TM $ f /|\ x -instance (Interpreted (Schematic Monad t u)) => Interpreted (t :> u) where+instance (Interpreted (->) (Schematic Monad t u)) => Interpreted (->) (t :> u) where type Primary (t :> u) a = Primary (Schematic Monad t u) a run ~(TM x) = run x unite = TM . unite
Pandora/Paradigm/Controlflow/Observable.hs view
@@ -3,7 +3,7 @@ import Pandora.Pattern.Semigroupoid ((.)) import Pandora.Pattern.Category (($), (#))-import Pandora.Paradigm.Primary.Algebraic (Applicative_, forever_)+import Pandora.Paradigm.Primary.Algebraic (Applicative, forever_) import Pandora.Paradigm.Primary.Transformer.Continuation (Continuation (Continuation)) import Pandora.Paradigm.Controlflow.Effect.Interpreted (run) @@ -24,25 +24,25 @@ (.:~.) = notify -- | Listen only first event, call back forever_-follow :: Applicative_ t => Observable t a r -> (a -> t r) -> t r+follow :: Applicative t => Observable t a r -> (a -> t r) -> t r follow r action = captured $ run r # Capture . forever_ . action -- | Infix version of 'follow'-(.:~*) :: Applicative_ t => Observable t a r -> (a -> t r) -> t r+(.:~*) :: Applicative t => Observable t a r -> (a -> t r) -> t r (.:~*) = follow -- | Listen all events from action, call back just once-subscribe :: Applicative_ t => Observable t a r -> (a -> t r) -> t r+subscribe :: Applicative t => Observable t a r -> (a -> t r) -> t r subscribe r action = forever_ $ captured $ run r # Capture . action -- | Infix version of 'subscribe'-(*:~.) :: Applicative_ t => Observable t a r -> (a -> t r) -> t r+(*:~.) :: Applicative t => Observable t a r -> (a -> t r) -> t r (*:~.) = subscribe -- | Listen all events from action, call back forever_-watch :: Applicative_ t => Observable t a r -> (a -> t r) -> t r+watch :: Applicative t => Observable t a r -> (a -> t r) -> t r watch r action = forever_ $ captured $ run r # Capture . forever_ . action -- | Infix version of 'watch'-(*:~*) :: Applicative_ t => Observable t a r -> (a -> t r) -> t r+(*:~*) :: Applicative t => Observable t a r -> (a -> t r) -> t r (*:~*) = watch
Pandora/Paradigm/Controlflow/Pipeline.hs view
@@ -4,7 +4,7 @@ import Pandora.Pattern.Category (($), (#)) import Pandora.Pattern.Functor.Bindable (Bindable ((=<<))) import Pandora.Pattern.Functor.Monoidal (Monoidal)-import Pandora.Paradigm.Primary.Algebraic.Exponential ((!.), (!..))+import Pandora.Paradigm.Primary.Algebraic.Exponential ((!.), (!..), type (<--), type (-->)) import Pandora.Paradigm.Primary.Algebraic.Product ((:*:)) import Pandora.Paradigm.Primary.Algebraic (point) import Pandora.Paradigm.Controlflow.Effect.Interpreted (Interpreted (Primary, run, unite))@@ -12,14 +12,14 @@ newtype Producer i t r = Producer { produce :: Consumer i t r -> t r } -instance Interpreted (Producer i t) where+instance Interpreted (->) (Producer i t) where type Primary (Producer i t) a = Consumer i t a -> t a run ~(Producer f) = f unite = Producer newtype Consumer o t r = Consumer { consume :: o -> Producer o t r -> t r } -instance Interpreted (Consumer o t) where+instance Interpreted (->) (Consumer o t) where type Primary (Consumer o t) a = o -> Producer o t a -> t a run ~(Consumer f) = f unite = Consumer@@ -43,7 +43,7 @@ yield v = Continuation $ \next -> Pipe $ \i (Consumer o) -> o v # pause next i -- | Pipeline that does nothing-finish :: Monoidal (->) (->) (:*:) (:*:) t => Pipeline i o t () ()+finish :: Monoidal (-->) (->) (:*:) (:*:) t => Pipeline i o t () () finish = Continuation (Pipe (point () !..) !.) -- | Do some effectful computation within pipeline@@ -51,14 +51,14 @@ impact action = Continuation $ \next -> Pipe $ \i o -> (\x -> pipe (next x) i o) =<< action -- | Compose two pipelines into one-(=*=) :: forall i e o t . Monoidal (->) (->) (:*:) (:*:) t => Pipeline i e t () () -> Pipeline e o t () () -> Pipeline i o t () ()+(=*=) :: forall i e o t . Monoidal (-->) (->) (:*:) (:*:) t => Pipeline i e t () () -> Pipeline e o t () () -> Pipeline i o t () () p =*= q = Continuation $ \_ -> Pipe $ \i -> pipe # run q end # pause (run p end !.) i where end :: b -> Pipe c d () t () end _ = Pipe (point () !..) -- | Run pipeline and get result-pipeline :: Monoidal (->) (->) (:*:) (:*:) t => Pipeline i o t () () -> t ()+pipeline :: Monoidal (-->) (->) (:*:) (:*:) t => Pipeline i o t () () -> t () pipeline p = pipe # run p (Pipe . (!..) . point) # i # o where i :: Producer i t ()
Pandora/Paradigm/Inventory/Accumulator.hs view
@@ -2,14 +2,16 @@ module Pandora.Paradigm.Inventory.Accumulator (Accumulator (..), Accumulated, gather) where +import Pandora.Pattern.Morphism.Straight (Straight (Straight)) import Pandora.Pattern.Semigroupoid ((.)) import Pandora.Pattern.Category (($), (#))-import Pandora.Pattern.Functor.Covariant (Covariant ((-<$>-)))-import Pandora.Pattern.Functor.Semimonoidal (Semimonoidal (multiply))+import Pandora.Pattern.Functor.Covariant (Covariant ((<$>)))+import Pandora.Pattern.Functor.Semimonoidal (Semimonoidal (mult)) import Pandora.Pattern.Functor.Bindable (Bindable ((=<<))) import Pandora.Pattern.Functor.Monad (Monad) import Pandora.Pattern.Object.Monoid (Monoid) import Pandora.Pattern.Object.Semigroup (Semigroup ((+)))+import Pandora.Paradigm.Primary.Algebraic.Exponential (type (-->)) import Pandora.Paradigm.Primary.Algebraic.Product ((:*:) ((:*:))) import Pandora.Paradigm.Primary.Algebraic (point) import Pandora.Paradigm.Controlflow.Effect.Interpreted (Schematic, Interpreted (Primary, run, unite))@@ -20,10 +22,10 @@ newtype Accumulator e a = Accumulator (e :*: a) instance Covariant (->) (->) (Accumulator e) where- f -<$>- Accumulator x = Accumulator $ f -<$>- x+ f <$> Accumulator x = Accumulator $ f <$> x -instance Semigroup e => Semimonoidal (->) (:*:) (:*:) (Accumulator e) where- multiply (x :*: y) = Accumulator $ k # run x # run y where+instance Semigroup e => Semimonoidal (-->) (:*:) (:*:) (Accumulator e) where+ mult = Straight $ \(x :*: y) -> Accumulator $ k # run x # run y where k ~(ex :*: x') ~(ey :*: y') = ex + ey :*: x' :*: y' instance Semigroup e => Bindable (->) (Accumulator e) where@@ -32,7 +34,7 @@ type instance Schematic Monad (Accumulator e) = (<.:>) ((:*:) e) -instance Interpreted (Accumulator e) where+instance Interpreted (->) (Accumulator e) where type Primary (Accumulator e) a = e :*: a run ~(Accumulator x) = x unite = Accumulator
Pandora/Paradigm/Inventory/Environment.hs view
@@ -2,22 +2,25 @@ module Pandora.Paradigm.Inventory.Environment (Environment (..), Configured, env) where +import Pandora.Core.Appliable ((!)) import Pandora.Pattern.Semigroupoid ((.)) import Pandora.Pattern.Category (identity, ($))-import Pandora.Pattern.Functor.Covariant (Covariant ((-<$>-)))-import Pandora.Pattern.Functor.Contravariant (Contravariant ((->$<-)))-import Pandora.Pattern.Functor.Semimonoidal (Semimonoidal (multiply))+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)) import Pandora.Pattern.Functor.Distributive (Distributive ((-<<))) import Pandora.Pattern.Functor.Bindable (Bindable ((=<<))) import Pandora.Pattern.Functor.Monad (Monad) import Pandora.Pattern.Functor.Divariant (Divariant ((>->)))-import Pandora.Paradigm.Primary.Algebraic.Exponential ((%))+import Pandora.Pattern.Functor.Bivariant ((<->))+import Pandora.Paradigm.Primary.Algebraic.Exponential (type (-->), (%)) import Pandora.Paradigm.Primary.Algebraic ()-import Pandora.Paradigm.Primary.Algebraic.Product ((:*:) ((:*:)))+import Pandora.Paradigm.Primary.Algebraic.Product ((:*:)) import Pandora.Paradigm.Primary.Algebraic.One (One (One)) import Pandora.Paradigm.Primary.Algebraic (point)-import Pandora.Paradigm.Primary.Transformer.Flip (Flip (Flip))+import Pandora.Pattern.Morphism.Flip (Flip (Flip))+import Pandora.Pattern.Morphism.Straight (Straight (Straight)) import Pandora.Paradigm.Controlflow.Effect.Interpreted (Schematic, Interpreted (Primary, run, unite)) import Pandora.Paradigm.Controlflow.Effect.Transformer.Monadic (Monadic (wrap), (:>) (TM)) import Pandora.Paradigm.Controlflow.Effect.Adaptable (Adaptable (adapt))@@ -26,19 +29,19 @@ newtype Environment e a = Environment (e -> a) instance Covariant (->) (->) (Environment e) where- f -<$>- Environment x = Environment $ f . x+ f <$> Environment x = Environment $ f . x instance Contravariant (->) (->) (Flip Environment a) where- f ->$<- Flip (Environment g) = Flip . Environment $ g . f+ f >$< Flip (Environment g) = Flip . Environment $ g . f -instance Semimonoidal (->) (:*:) (:*:) (Environment e) where- multiply (x :*: y) = unite $ multiply $ run x :*: run y+instance Semimonoidal (-->) (:*:) (:*:) (Environment e) where+ mult = Straight $ Environment . (mult @(-->) !) . (run @(->) <-> run @(->)) -instance Monoidal (->) (->) (:*:) (:*:) (Environment e) where- unit _ f = Environment $ \_ -> f One+instance Monoidal (-->) (->) (:*:) (:*:) (Environment e) where+ unit _ = Straight $ \f -> Environment $ \_ -> f One instance Distributive (->) (->) (Environment e) where- f -<< g = Environment $ (run -<$>- f) -<< g+ f -<< g = Environment $ (run @(->) <$> f) -<< g instance Bindable (->) (Environment e) where f =<< Environment x = Environment $ \e -> (run % e) . f . x $ e@@ -48,7 +51,7 @@ instance Divariant (->) (->) (->) Environment where (>->) ab cd bc = Environment $ ab >-> cd $ run bc -instance Interpreted (Environment e) where+instance Interpreted (->) (Environment e) where type Primary (Environment e) a = (->) e a run ~(Environment x) = x unite = Environment@@ -56,7 +59,7 @@ type instance Schematic Monad (Environment e) = (<:.>) ((->) e) instance Monadic (Environment e) where- wrap x = TM . TU $ point -<$>- run x+ wrap x = TM . TU $ point <$> run x type Configured e = Adaptable (Environment e)
Pandora/Paradigm/Inventory/Equipment.hs view
@@ -4,7 +4,7 @@ import Pandora.Pattern.Semigroupoid ((.)) import Pandora.Pattern.Category (($))-import Pandora.Pattern.Functor.Covariant (Covariant ((-<$>-)))+import Pandora.Pattern.Functor.Covariant (Covariant ((<$>))) import Pandora.Pattern.Functor.Traversable (Traversable ((<<-))) import Pandora.Pattern.Functor.Extendable (Extendable ((<<=))) import Pandora.Pattern.Functor.Comonad (Comonad)@@ -17,15 +17,15 @@ newtype Equipment e a = Equipment (e :*: a) instance Covariant (->) (->) (Equipment e) where- f -<$>- Equipment x = Equipment $ f -<$>- x+ f <$> Equipment x = Equipment $ f <$> x instance Traversable (->) (->) (Equipment e) where- f <<- Equipment x = Equipment -<$>- f <<- x+ f <<- Equipment x = Equipment <$> f <<- x instance Extendable (->) (Equipment e) where f <<= Equipment (e :*: x) = Equipment . (:*:) e . f . Equipment $ e :*: x -instance Interpreted (Equipment e) where+instance Interpreted (->) (Equipment e) where type Primary (Equipment e) a = e :*: a run ~(Equipment x) = x unite = Equipment@@ -38,4 +38,4 @@ f <<= TU (e :*: x) = TU . (:*:) e $ f . TU . (:*:) e <<= x retrieve :: Equipped e t => t a -> e-retrieve = attached . run @(Equipment _) . adapt+retrieve = attached . run @(->) @(Equipment _) . adapt
Pandora/Paradigm/Inventory/Imprint.hs view
@@ -4,15 +4,15 @@ import Pandora.Pattern.Semigroupoid ((.)) import Pandora.Pattern.Category (($))-import Pandora.Pattern.Functor.Covariant (Covariant ((-<$>-)))-import Pandora.Pattern.Functor.Contravariant (Contravariant ((->$<-)))+import Pandora.Pattern.Functor.Covariant (Covariant ((<$>)))+import Pandora.Pattern.Functor.Contravariant (Contravariant ((>$<))) import Pandora.Pattern.Functor.Distributive (Distributive ((-<<))) import Pandora.Pattern.Functor.Extendable (Extendable ((<<=))) import Pandora.Pattern.Functor.Comonad (Comonad) import Pandora.Pattern.Functor.Divariant (Divariant ((>->))) import Pandora.Pattern.Object.Semigroup (Semigroup ((+))) import Pandora.Paradigm.Primary.Algebraic.Exponential ()-import Pandora.Paradigm.Primary.Transformer.Flip (Flip (Flip))+import Pandora.Pattern.Morphism.Flip (Flip (Flip)) import Pandora.Paradigm.Controlflow.Effect.Interpreted (Schematic, Interpreted (Primary, run, unite, (||=))) import Pandora.Paradigm.Controlflow.Effect.Adaptable (Adaptable) import Pandora.Paradigm.Schemes.UT (UT (UT), type (<.:>))@@ -20,13 +20,13 @@ newtype Imprint e a = Imprint (e -> a) instance Covariant (->) (->) (Imprint e) where- f -<$>- Imprint g = Imprint $ f . g+ f <$> Imprint g = Imprint $ f . g instance Contravariant (->) (->) (Flip Imprint a) where- f ->$<- Flip (Imprint g) = Flip . Imprint $ g . f+ f >$< Flip (Imprint g) = Flip . Imprint $ g . f instance Distributive (->) (->) (Imprint e) where- f -<< g = Imprint $ (run -<$>- f) -<< g+ f -<< g = Imprint $ (run @(->) <$> f) -<< g instance Divariant (->) (->) (->) Imprint where (>->) ab cd bc = ab >-> cd ||= bc@@ -34,7 +34,7 @@ instance Semigroup e => Extendable (->) (Imprint e) where f <<= Imprint x = Imprint $ \e -> f $ Imprint $ x . (e +) -instance Interpreted (Imprint e) where+instance Interpreted (->) (Imprint e) where type Primary (Imprint e) a = (->) e a run ~(Imprint x) = x unite = Imprint@@ -42,6 +42,6 @@ type instance Schematic Comonad (Imprint e) = (<.:>) ((->) e) instance {-# OVERLAPS #-} (Semigroup e, Extendable (->) u) => Extendable (->) ((->) e <.:> u) where- f <<= UT x = UT $ (\x' e -> f . UT . (-<$>-) (. (e +)) $ x') <<= x+ f <<= UT x = UT $ (\x' e -> f . UT . (<$>) (. (e +)) $ x') <<= x type Traceable e t = Adaptable t (Imprint e)
Pandora/Paradigm/Inventory/Optics.hs view
@@ -5,7 +5,7 @@ import Pandora.Core.Impliable (Impliable (Arguments, imply)) import Pandora.Pattern.Semigroupoid (Semigroupoid ((.))) import Pandora.Pattern.Category (Category (identity, ($), (#)))-import Pandora.Pattern.Functor.Covariant (Covariant ((-<$>-)))+import Pandora.Pattern.Functor.Covariant (Covariant ((<$>))) import Pandora.Pattern.Functor.Invariant (Invariant ((<$<))) import Pandora.Pattern.Functor.Divariant ((>->)) import Pandora.Pattern.Functor.Representable (Representable (Representation, (<#>), tabulate))@@ -16,7 +16,7 @@ import Pandora.Paradigm.Primary.Algebraic (($>-), extract) import Pandora.Paradigm.Primary.Functor.Identity (Identity (Identity)) import Pandora.Paradigm.Primary.Functor.Maybe (Maybe (Just, Nothing))-import Pandora.Paradigm.Primary.Transformer.Flip (Flip (Flip))+import Pandora.Pattern.Morphism.Flip (Flip (Flip)) import Pandora.Paradigm.Primary.Object.Boolean ((?)) import Pandora.Paradigm.Inventory.Store (Store (Store), position, look, retrofit) import Pandora.Paradigm.Schemes.P_Q_T (P_Q_T (P_Q_T))@@ -27,15 +27,17 @@ type Lens = P_Q_T (->) Store instance Invariant (Flip (Lens available) tgt) where- f <$< g = \(Flip (P_Q_T lens)) -> Flip . P_Q_T $ g >-> (f -<$>-) $ lens+ f <$< g = \(Flip (P_Q_T lens)) -> Flip . P_Q_T $ g >-> (f <$>) $ lens type family Convex lens where Convex Lens = Lens Identity instance Semigroupoid (Lens Identity) where+ (.) :: Convex Lens between target -> Convex Lens source between -> Convex Lens source target P_Q_T to . P_Q_T from = P_Q_T $ \source -> (to . extract @Identity . position $ from source) $>- source instance Category (Lens Identity) where+ identity :: Convex Lens source source identity = imply @(Convex Lens _ _) identity ((%) (!.)) instance Impliable (P_Q_T (->) Store Identity source target) where@@ -52,11 +54,13 @@ imply getter setter = P_Q_T $ \source -> Store $ getter source :*: setter source instance Semigroupoid (Lens Maybe) where+ (.) :: Obscure Lens between target -> Obscure Lens source between -> Obscure Lens source target P_Q_T to . P_Q_T from = P_Q_T $ \source -> case position # from source of Nothing -> Store $ Nothing :*: (source !.) Just between -> to between $>- source instance Category (Lens Maybe) where+ identity :: Obscure Lens source source identity = imply @(Obscure Lens _ _) # Just # resolve identity -- Lens as natural transformation
Pandora/Paradigm/Inventory/State.hs view
@@ -2,12 +2,14 @@ module Pandora.Paradigm.Inventory.State where +import Pandora.Pattern.Morphism.Flip (Flip)+import Pandora.Pattern.Morphism.Straight (Straight (Straight)) import Pandora.Core.Functor (type (:.), type (:=)) import Pandora.Pattern.Semigroupoid ((.)) import Pandora.Pattern.Category (identity, ($))-import Pandora.Pattern.Functor.Covariant (Covariant ((-<$>-)))+import Pandora.Pattern.Functor.Covariant (Covariant ((<$>))) import Pandora.Pattern.Functor.Invariant (Invariant ((<$<)))-import Pandora.Pattern.Functor.Semimonoidal (Semimonoidal (multiply))+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 ((=<<)))@@ -15,39 +17,39 @@ import Pandora.Pattern.Functor.Adjoint ((-|), (|-)) import Pandora.Pattern.Functor.Bivariant ((<->)) import Pandora.Pattern.Functor.Divariant ((>->))-import Pandora.Paradigm.Primary.Transformer (Flip) import Pandora.Paradigm.Controlflow.Effect.Adaptable (Adaptable (adapt)) import Pandora.Paradigm.Controlflow.Effect.Interpreted (Interpreted (Primary, run, unite, (||=)), Schematic) import Pandora.Paradigm.Controlflow.Effect.Transformer.Monadic (Monadic (wrap), (:>) (TM)) import Pandora.Paradigm.Schemes.TUT (TUT (TUT), type (<:<.>:>))+import Pandora.Paradigm.Primary.Algebraic.Exponential (type (-->)) import Pandora.Paradigm.Primary.Algebraic ((:*:) ((:*:)), (*>-), delta) import Pandora.Paradigm.Primary.Algebraic.One (One (One))-import Pandora.Paradigm.Primary.Algebraic (point)+import Pandora.Paradigm.Primary.Algebraic (Pointable, point) -- | Effectful computation with a variable newtype State s a = State ((->) s :. (:*:) s := a) instance Covariant (->) (->) (State s) where- f -<$>- x = State $ (-<$>-) f . run x+ f <$> x = State $ (<$>) f . run x -instance Semimonoidal (->) (:*:) (:*:) (State s) where- multiply (State g :*: State h) = State $ \s -> - let old :*: x = g s in - let new :*: y = h old in+instance Semimonoidal (-->) (:*:) (:*:) (State s) where+ mult = Straight $ \(State g :*: State h) -> State $ \s ->+ let old :*: x = g s in+ let new :*: y = h old in new :*: x :*: y -instance Monoidal (->) (->) (:*:) (:*:) (State s) where- unit _ f = State . (identity @(->) -|) $ f One+instance Monoidal (-->) (->) (:*:) (:*:) (State s) where+ unit _ = Straight $ State . (identity @(->) -|) . ($ One) instance Bindable (->) (State s) where- f =<< x = State $ (run . f |-) -<$>- run x+ f =<< x = State $ (run . f |-) <$> run x -instance Monad (State s) where+instance Monad (->) (State s) where instance Invariant (Flip State r) where f <$< g = ((g >-> ((<->) @_ @(->) @(->) f identity) ||=) ||=) -instance Interpreted (State s) where+instance Interpreted (->) (State s) where type Primary (State s) a = (->) s :. (:*:) s := a run ~(State x) = x unite = State@@ -55,7 +57,7 @@ type instance Schematic Monad (State s) = (->) s <:<.>:> (:*:) s instance Monadic (State s) where- wrap x = TM . TUT $ point -<$>- run x+ wrap x = TM . TUT $ point <$> run x type Stateful s = Adaptable (State s) @@ -74,7 +76,7 @@ reconcile :: (Bindable (->) t, Stateful s t, Adaptable u t) => (s -> u s) -> t s reconcile f = replace =<< adapt . f =<< current -type Memorable s t = (Covariant (->) (->) t, Monoidal (->) (->) (:*:) (:*:) t, Stateful s t)+type Memorable s t = (Covariant (->) (->) t, Pointable t, Stateful s t) fold :: (Traversable (->) (->) t, Memorable s u) => (a -> s -> s) -> t a -> u s fold op struct = (modify . op <<- struct) *>- current
Pandora/Paradigm/Inventory/Store.hs view
@@ -5,8 +5,8 @@ import Pandora.Core (type (:.), type (:=), type (<:=), type (~>)) import Pandora.Pattern.Semigroupoid ((.)) import Pandora.Pattern.Category (identity, ($))-import Pandora.Pattern.Functor.Covariant (Covariant ((-<$>-)), (-<$$>-))-import Pandora.Pattern.Functor.Semimonoidal (Semimonoidal (multiply))+import Pandora.Pattern.Functor.Covariant (Covariant ((<$>)), (<$$>))+import Pandora.Pattern.Functor.Semimonoidal (Semimonoidal (mult)) import Pandora.Pattern.Functor.Monoidal (Monoidal (unit)) import Pandora.Pattern.Functor.Invariant (Invariant ((<$<))) import Pandora.Pattern.Functor.Extendable (Extendable ((<<=)))@@ -17,7 +17,7 @@ import Pandora.Paradigm.Primary.Algebraic.Exponential (type (<--), (%), (!.), (-.#..-)) import Pandora.Paradigm.Primary.Algebraic.Product ((:*:) ((:*:)), attached) import Pandora.Paradigm.Primary.Algebraic (extract)-import Pandora.Paradigm.Primary.Transformer.Flip (Flip (Flip))+import Pandora.Pattern.Morphism.Flip (Flip (Flip)) import Pandora.Paradigm.Controlflow.Effect.Adaptable (Adaptable (adapt)) import Pandora.Paradigm.Controlflow.Effect.Interpreted (Interpreted (Primary, run, unite, (||=)), Schematic) import Pandora.Paradigm.Controlflow.Effect.Transformer.Comonadic (Comonadic (bring), (:<) (TC))@@ -26,26 +26,28 @@ -- | Context based computation on value newtype Store s a = Store ((:*:) s :. (->) s := a) +-- TODO: Try to generalize (->) here instance Covariant (->) (->) (Store s) where- f -<$>- Store x = Store $ f -<$$>- x+ (<$>) f = (||=) ((<$$>) @(->) @(->) f) instance Semimonoidal (<--) (:*:) (:*:) (Store s) where- multiply = Flip $ \(Store (s :*: f)) -> + mult = Flip $ \(Store (s :*: f)) -> let (x :*: y) = f s in Store (s :*: (x !.)) :*: Store (s :*: (y !.)) instance Monoidal (<--) (->) (:*:) (:*:) (Store s) where unit _ = Flip $ \(Store (s :*: f)) -> (\_ -> f s) +-- TODO: Try to generalize (->) here instance Extendable (->) (Store s) where- f <<= Store x = Store $ f -<$$>- (Store -.#..- (identity @(->) -|) -<$>- x)+ f <<= Store x = Store $ (<$$>) @(->) @(->) f (Store -.#..- (identity @(->) -|) <$> x) -instance Comonad (Store s) (->) where+instance Comonad (->) (Store s) where instance Invariant (Flip Store r) where f <$< g = \(Flip x) -> Flip $ (<->) @_ @(->) f (g >-> identity @(->)) ||= x -instance Interpreted (Store s) where+instance Interpreted (->) (Store s) where type Primary (Store s) a = (:*:) s :. (->) s := a run ~(Store x) = x unite = Store@@ -59,11 +61,11 @@ -- | Get current index position :: Storable s t => t a -> s-position = attached . run @(Store _) . adapt+position = attached . run @(->) @(Store _) . adapt -- | Given an index return value look :: Storable s t => s -> a <:= t-look s = (extract % s) . run @(Store _) . adapt+look s = (extract % s) . run @(->) @(Store _) . adapt -- | Change index with function retrofit :: (s -> s) -> Store s ~> Store s
Pandora/Paradigm/Primary.hs view
@@ -8,10 +8,11 @@ import Pandora.Paradigm.Primary.Object as Exports import Pandora.Paradigm.Primary.Algebraic as Exports +import Pandora.Pattern.Morphism.Flip (Flip (Flip)) import Pandora.Core.Functor (type (:=)) import Pandora.Pattern.Semigroupoid (Semigroupoid ((.))) import Pandora.Pattern.Category (Category (($), (#)))-import Pandora.Pattern.Functor.Covariant (Covariant ((-<$>-)))+import Pandora.Pattern.Functor.Covariant (Covariant ((<$>))) import Pandora.Pattern.Functor.Adjoint (Adjoint ((|-), (-|))) import Pandora.Pattern.Transformer.Liftable (lift) import Pandora.Pattern.Transformer.Lowerable (lower)@@ -89,16 +90,16 @@ type Available Left Wye = Maybe type Substance Left Wye = Identity substructure = P_Q_T $ \new -> case lower new of- End -> Store $ Nothing :*: lift . resolve Left End . (extract -<$>-)- Left x -> Store $ Just (Identity x) :*: lift . resolve Left End . (extract -<$>-)- Right y -> Store $ Nothing :*: (lift # Right y !.) . (extract -<$>-)- Both x y -> Store $ Just (Identity x) :*: lift . resolve (Both % y) (Right y) . (extract -<$>-)+ End -> Store $ Nothing :*: lift . resolve Left End . (extract <$>)+ Left x -> Store $ Just (Identity x) :*: lift . resolve Left End . (extract <$>)+ Right y -> Store $ Nothing :*: (lift # Right y !.) . (extract <$>)+ Both x y -> Store $ Just (Identity x) :*: lift . resolve (Both % y) (Right y) . (extract <$>) instance Substructure Right Wye where type Available Right Wye = Maybe type Substance Right Wye = Identity substructure = P_Q_T $ \new -> case lower new of- End -> Store $ Nothing :*: lift . resolve Right End . (extract -<$>-)- Left x -> Store $ Nothing :*: (lift # Left x !.) . (extract -<$>-)- Right y -> Store $ Just (Identity y) :*: lift . resolve Right End . (extract -<$>-)- Both x y -> Store $ Just (Identity y) :*: lift . resolve (Both x) (Left x) . (extract -<$>-)+ End -> Store $ Nothing :*: lift . resolve Right End . (extract <$>)+ Left x -> Store $ Nothing :*: (lift # Left x !.) . (extract <$>)+ Right y -> Store $ Just (Identity y) :*: lift . resolve Right End . (extract <$>)+ Both x y -> Store $ Just (Identity y) :*: lift . resolve (Both x) (Left x) . (extract <$>)
Pandora/Paradigm/Primary/Algebraic.hs view
@@ -1,6 +1,6 @@ {-# OPTIONS_GHC -fno-warn-orphans #-} -module Pandora.Paradigm.Primary.Algebraic (module Exports, Applicative_, Alternative_, Extractable_, ($>-), ($$>-), ($$$>-), (-<*>-), (*>-), forever_, (-+-), void, empty, point, extract) where+module Pandora.Paradigm.Primary.Algebraic (module Exports, Applicative, Alternative, Extractable, Pointable, ($>-), ($$>-), ($$$>-), (<-*-), (*>-), forever_, (-+-), void, empty, point, extract) where import Pandora.Paradigm.Primary.Algebraic.Exponential as Exports import Pandora.Paradigm.Primary.Algebraic.Product as Exports@@ -8,35 +8,39 @@ import Pandora.Paradigm.Primary.Algebraic.Zero as Exports import Pandora.Paradigm.Primary.Algebraic.One as Exports +import Pandora.Core.Appliable ((!))+import Pandora.Pattern.Morphism.Flip (Flip (Flip))+import Pandora.Pattern.Morphism.Straight (Straight (Straight)) import Pandora.Pattern.Category (($))-import Pandora.Pattern.Functor.Covariant (Covariant ((-<$>-)), (-<$$>-), (-<$$$>-))-import Pandora.Pattern.Functor.Semimonoidal (Semimonoidal (multiply))+import Pandora.Pattern.Semigroupoid ((.))+import Pandora.Pattern.Functor.Covariant (Covariant ((<$>)), (<$$>), (<$$$>))+import Pandora.Pattern.Functor.Semimonoidal (Semimonoidal (mult)) import Pandora.Pattern.Functor.Monoidal (Monoidal (unit), Unit) import Pandora.Pattern.Functor.Comonad (Comonad) import Pandora.Pattern.Functor.Traversable (Traversable ((<<-))) import Pandora.Pattern.Functor.Adjoint (Adjoint ((-|), (|-))) import Pandora.Paradigm.Primary.Functor.Proxy (Proxy (Proxy))-import Pandora.Paradigm.Primary.Transformer.Flip (Flip (Flip))+import Pandora.Paradigm.Controlflow.Effect.Interpreted (run) type instance Unit (:*:) = One type instance Unit (:+:) = Zero -infixl 4 -<*>-+infixl 4 <-*- ($>-) :: Covariant (->) (->) t => t a -> b -> t b-x $>- r = (r !.) -<$>- x+x $>- r = (r !.) <$> x ($$>-) :: (Covariant (->) (->) t, Covariant (->) (->) u) => t (u a) -> b -> t (u b)-x $$>- r = (r !.) -<$$>- x+x $$>- r = (<$$>) @(->) @(->) (r !.) x ($$$>-) :: (Covariant (->) (->) t, Covariant (->) (->) u, Covariant (->) (->) v) => t (u (v a)) -> b -> t (u (v b))-x $$$>- r = (r !.) -<$$$>- x+x $$$>- r = (<$$$>) @(->) @(->) @(->) (r !.) x void :: Covariant (->) (->) t => t a -> t () void x = x $>- () instance Traversable (->) (->) ((:*:) s) where- f <<- x = (attached x :*:) -<$>- f (extract x)+ f <<- x = (attached x :*:) <$> f (extract x) instance Adjoint (->) (->) ((:*:) s) ((->) s) where (-|) :: ((s :*: a) -> b) -> a -> (s -> b)@@ -44,65 +48,72 @@ (|-) :: (a -> s -> b) -> (s :*: a) -> b f |- ~(s :*: x) = f x s -instance Semimonoidal (->) (:*:) (:*:) ((->) e) where- multiply :: ((e -> a) :*: (e -> b)) -> e -> (a :*: b)- multiply (g :*: h) = \x -> g x :*: h x+instance Semimonoidal (-->) (:*:) (:*:) ((->) e) where+ mult :: ((e -> a) :*: (e -> b)) --> (e -> (a :*: b))+ mult = Straight $ \(g :*: h) -> \x -> g x :*: h x instance Semimonoidal (<--) (:*:) (:*:) ((->) e) where- multiply = Flip $ \f -> (\e -> attached $ f e) :*: (\e -> extract $ f e)+ mult :: ((e -> a) :*: (e -> b)) <-- (e -> a :*: b)+ mult = Flip $ \f -> attached . f :*: extract . f -instance Semimonoidal (->) (:*:) (:+:) ((:+:) e) where- multiply :: ((e :+: a) :*: (e :+: b)) -> e :+: a :+: b- multiply (Option _ :*: Option e') = Option e'- multiply (Option _ :*: Adoption y) = Adoption $ Adoption y- multiply (Adoption x :*: _) = Adoption $ Option x+instance Semimonoidal (-->) (:*:) (:+:) ((:+:) e) where+ mult :: ((e :+: a) :*: (e :+: b)) --> (e :+: a :+: b)+ mult = Straight $ \case+ Option _ :*: Option e' -> Option e'+ Option _ :*: Adoption y -> Adoption $ Adoption y+ Adoption x :*: _ -> Adoption $ Option x -instance Semimonoidal (->) (:*:) (:*:) ((:+:) e) where- multiply (Adoption x :*: Adoption y) = Adoption $ x :*: y- multiply (Option e :*: _) = Option e- multiply (_ :*: Option e) = Option e+instance Semimonoidal (-->) (:*:) (:*:) ((:+:) e) where+ mult = Straight $ \case+ Adoption x :*: Adoption y -> Adoption $ x :*: y+ Option e :*: _ -> Option e+ _ :*: Option e -> Option e -instance Monoidal (->) (->) (:*:) (:*:) ((:+:) e) where- unit _ f = Adoption $ f One+instance Monoidal (-->) (->) (:*:) (:*:) ((:+:) e) where+ unit _ = Straight $ Adoption . ($ One) instance Semimonoidal (<--) (:*:) (:*:) ((:*:) s) where- multiply = Flip $ \(s :*: x :*: y) -> (s :*: x) :*: (s :*: y)+ mult = Flip $ \(s :*: x :*: y) -> (s :*: x) :*: (s :*: y) instance Monoidal (<--) (->) (:*:) (:*:) ((:*:) s) where unit _ = Flip $ \(_ :*: x) -> (\_ -> x) -instance Comonad ((:*:) s) (->) where+instance Comonad (->) ((:*:) s) where instance Semimonoidal (<--) (:*:) (:*:) (Flip (:*:) a) where- multiply = Flip $ \(Flip ((sx :*: sy) :*: r)) -> Flip (sx :*: r) :*: Flip (sy :*: r)+ mult = Flip $ \(Flip ((sx :*: sy) :*: r)) -> Flip (sx :*: r) :*: Flip (sy :*: r) instance Monoidal (<--) (->) (:*:) (:*:) (Flip (:*:) a) where unit _ = Flip $ \(Flip (s :*: _)) -> (\_ -> s) -type Applicative_ t = (Covariant (->) (->) t, Semimonoidal (->) (:*:) (:*:) t, Monoidal (->) (->) (:*:) (:*:) t)-type Alternative_ t = (Covariant (->) (->) t, Semimonoidal (->) (:*:) (:+:) t, Monoidal (->) (->) (:*:) (:+:) t)+type Applicative t = (Covariant (->) (->) t, Semimonoidal (-->) (:*:) (:*:) t, Monoidal (-->) (->) (:*:) (:*:) t)+type Alternative t = (Covariant (->) (->) t, Semimonoidal (-->) (:*:) (:+:) t, Monoidal (-->) (->) (:*:) (:+:) t) -(-<*>-) :: (Covariant (->) (->) t, Semimonoidal (->) (:*:) (:*:) t)- => t (a -> b) -> t a -> t b-f -<*>- x = (|-) @(->) @(->) (&) -<$>- multiply @_ @_ @(:*:) (f :*: x)+(<-*-) :: (Covariant (->) (->) t, Semimonoidal (-->) (:*:) (:*:) t) => t (a -> b) -> t a -> t b+f <-*- x = (|-) @(->) @(->) (&) <$> run (mult @(-->) @_ @(:*:)) (f :*: x) -forever_ :: (Covariant (->) (->) t, Semimonoidal (->) (:*:) (:*:) t) => t a -> t b+forever_ :: (Covariant (->) (->) t, Semimonoidal (-->) (:*:) (:*:) t) => t a -> t b forever_ x = let r = x *>- r in r -(*>-) :: (Covariant (->) (->) t, Semimonoidal (->) (:*:) (:*:) t) => t a -> t b -> t b-x *>- y = ((!.) %) -<$>- x -<*>- y+(*>-) :: (Covariant (->) (->) t, Semimonoidal (-->) (:*:) (:*:) t) => t a -> t b -> t b+x *>- y = ((!.) %) <$> x <-*- y -(-+-) :: (Covariant (->) (->) t, Semimonoidal (->) (:*:) (:+:) t)- => t a -> t b -> (a :+: b -> r) -> t r-x -+- y = \f -> f -<$>- multiply (x :*: y)+(-+-) :: (Covariant (->) (->) t, Semimonoidal (-->) (:*:) (:+:) t)+ => t a -> t b -> (a :+: b -> r) -> t r+x -+- y = \f -> f <$> (mult @(-->) ! (x :*: y)) -point :: Monoidal (->) (->) (:*:) (:*:) t => a -> t a-point x = unit (Proxy @(:*:)) (\One -> x)+type Extractable t = Monoidal (<--) (->) (:*:) (:*:) t+type Pointable t = Monoidal (-->) (->) (:*:) (:*:) t+type Emptiable t = Monoidal (-->) (->) (:*:) (:+:) t -empty :: Monoidal (->) (->) (:*:) (:+:) t => t a-empty = unit (Proxy @(:*:)) absurd+extract :: Extractable t => t a -> a+extract j = run (unit @(<--) Proxy) j One -type Extractable_ t = Monoidal (<--) (->) (:*:) (:*:) t+point :: Pointable t => a -> t a+point x = run (unit @(-->) Proxy) (\One -> x) -extract :: Extractable_ t => t a -> a-extract j = let Flip f = unit @(<--) @(->) @(:*:) @(:*:) Proxy in f j $ One+empty :: Emptiable t => t a+empty = unit @(-->) (Proxy @(:*:)) ! absurd++--instance Appliable (->) b c (->) e d => Appliable (->) a (b -> c) (->) (a :*: e) d where+-- f ! (x :*: y) = f x ! y
Pandora/Paradigm/Primary/Algebraic/Exponential.hs view
@@ -2,16 +2,18 @@ module Pandora.Paradigm.Primary.Algebraic.Exponential where +import Pandora.Core.Appliable (Appliable ((!))) import Pandora.Pattern.Semigroupoid (Semigroupoid ((.))) import Pandora.Pattern.Category (Category (($), (#), identity))-import Pandora.Pattern.Functor.Covariant (Covariant ((-<$>-)))-import Pandora.Pattern.Functor.Contravariant (Contravariant ((->$<-)))+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.Functor.Divariant (Divariant ((>->))) import Pandora.Pattern.Object.Semigroup (Semigroup ((+))) import Pandora.Pattern.Object.Ringoid (Ringoid ((*)))-import Pandora.Paradigm.Primary.Transformer.Flip (Flip (Flip))+import Pandora.Pattern.Morphism.Flip (Flip (Flip))+import Pandora.Pattern.Morphism.Straight (Straight (Straight)) infixr 2 !. infixr 7 -.#..-@@ -25,10 +27,10 @@ identity x = x instance Covariant (->) (->) ((->) a) where- (-<$>-) = (.)+ (<$>) = (.) instance Distributive (->) (->) ((->) e) where- f -<< g = \e -> (f % e) -<$>- g+ f -<< g = \e -> (f % e) <$> g instance Bindable (->) ((->) e) where f =<< g = \x -> f # g x # x@@ -44,17 +46,23 @@ type (<--) = Flip (->) -instance Semigroupoid (<--) where- Flip f . Flip g = Flip $ \x -> g (f x)+instance Contravariant (->) (->) ((<--) a) where+ f >$< Flip g = Flip $ g . f -instance Category (<--) where- identity = Flip identity+type (-->) = Straight (->) -instance Contravariant (->) (->) ((<--) a) where- f ->$<- Flip g = Flip $ g . f+instance Covariant (->) (->) ((-->) b) where+ f <$> Straight g = Straight $ f . g +instance Appliable (->) c b (->) c b where+ f ! x = f x++-- TODO: Is it possible to generalize?+instance Appliable (->) a (b -> c) (->) b (a -> c) where+ (!) f = (%) f+ (-.#..-) :: (Covariant (->) target (v a), Semigroupoid v) => v c d -> target (v a (v b c)) (v a (v b d))-(-.#..-) f = (-<$>-) (f .)+(-.#..-) f = (<$>) (f .) {-# INLINE (!.) #-} (!.) :: a -> b -> a
Pandora/Paradigm/Primary/Algebraic/Product.hs view
@@ -1,9 +1,10 @@ module Pandora.Paradigm.Primary.Algebraic.Product where import Pandora.Core.Functor (type (:=))+import Pandora.Core.Appliable ((!)) import Pandora.Pattern.Category (($), (#))-import Pandora.Pattern.Functor.Covariant (Covariant ((-<$>-)))-import Pandora.Pattern.Functor.Semimonoidal (Semimonoidal (multiply))+import Pandora.Pattern.Functor.Covariant (Covariant ((<$>)))+import Pandora.Pattern.Functor.Semimonoidal (Semimonoidal (mult)) import Pandora.Pattern.Functor.Extendable (Extendable ((<<=))) import Pandora.Pattern.Functor.Bivariant (Bivariant ((<->))) import Pandora.Pattern.Object.Setoid (Setoid ((==)))@@ -14,8 +15,9 @@ import Pandora.Pattern.Object.Semilattice (Infimum ((/\)), Supremum ((\/))) import Pandora.Pattern.Object.Lattice (Lattice) import Pandora.Pattern.Object.Group (Group (invert))-import Pandora.Paradigm.Primary.Algebraic.Exponential (type (<--))-import Pandora.Paradigm.Primary.Transformer.Flip (Flip (Flip))+import Pandora.Paradigm.Primary.Algebraic.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 (<:.:>)) infixr 0 :*:@@ -23,10 +25,10 @@ data (:*:) s a = s :*: a instance Covariant (->) (->) ((:*:) s) where- f -<$>- ~(s :*: x) = s :*: f x+ f <$> ~(s :*: x) = s :*: f x instance Covariant (->) (->) (Flip (:*:) a) where- f -<$>- (Flip (x :*: y)) = Flip $ f x :*: y+ f <$> (Flip (x :*: y)) = Flip $ f x :*: y instance Extendable (->) ((:*:) s) where f <<= ~(s :*: x) = s :*: f (s :*: x)@@ -60,16 +62,14 @@ instance (Group s, Group a) => Group (s :*: a) where invert ~(s :*: x) = invert # s :*: invert # x -instance {-# OVERLAPS #-} Semimonoidal (->) (:*:) (:*:) t => Semimonoidal (->) (:*:) (:*:) (t <:.:> t := (:*:)) where- multiply (T_U (xls :*: xrs) :*: T_U (yls :*: yrs)) = T_U $ multiply (xls :*: yls) :*: multiply (xrs :*: yrs)+instance {-# OVERLAPS #-} Semimonoidal (-->) (:*:) (:*:) t => Semimonoidal (-->) (:*:) (:*:) (t <:.:> t := (:*:)) where+ mult = Straight $ \(T_U (xls :*: xrs) :*: T_U (yls :*: yrs)) -> T_U $ (mult @(-->) !) (xls :*: yls) :*: (mult @(-->) !) (xrs :*: yrs) -- TODO: Generalize (:*:) as Bivariant p instance (Semimonoidal (<--) (:*:) (:*:) t, Semimonoidal (<--) (:*:) (:*:) u) => Semimonoidal (<--) (:*:) (:*:) (t <:.:> u := (:*:)) where- multiply = Flip $ \(T_U (lxys :*: rxys)) ->- let Flip f = multiply @(<--) @(:*:) @(:*:) in- let Flip g = multiply @(<--) @(:*:) @(:*:) in- let (lxs :*: lys) = f lxys in- let (rxs :*: rys) = g rxys in+ mult = Flip $ \(T_U lrxys) ->+ -- TODO: I need matrix transposing here+ let ((lxs :*: lys) :*: (rxs :*: rys)) = ((mult @(<--) !) <-> (mult @(<--) !)) lrxys in T_U (lxs :*: rxs) :*: T_U (lys :*: rys) delta :: a -> a :*: a
Pandora/Paradigm/Primary/Algebraic/Sum.hs view
@@ -2,18 +2,18 @@ import Pandora.Pattern.Semigroupoid ((.)) import Pandora.Pattern.Category (($))-import Pandora.Pattern.Functor.Covariant (Covariant ((-<$>-)))+import Pandora.Pattern.Functor.Covariant (Covariant ((<$>))) import Pandora.Pattern.Functor.Bivariant (Bivariant ((<->))) import Pandora.Paradigm.Primary.Algebraic.Exponential ()-import Pandora.Paradigm.Primary.Transformer.Flip (Flip (Flip))+import Pandora.Pattern.Morphism.Flip (Flip (Flip)) infixr 0 :+: data (:+:) s a = Option s | Adoption a instance Covariant (->) (->) ((:+:) s) where- _ -<$>- Option s = Option s- f -<$>- Adoption x = Adoption $ f x+ _ <$> Option s = Option s+ f <$> Adoption x = Adoption $ f x instance Bivariant (->) (->) (->) (:+:) where f <-> g = \case@@ -21,8 +21,8 @@ Adoption x -> Adoption $ g x instance Covariant (->) (->) (Flip (:+:) a) where- _ -<$>- Flip (Adoption x) = Flip $ Adoption x- f -<$>- Flip (Option y) = Flip . Option $ f y+ _ <$> 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
Pandora/Paradigm/Primary/Functor/Conclusion.hs view
@@ -2,10 +2,10 @@ import Pandora.Core.Functor (type (~>)) import Pandora.Pattern.Semigroupoid ((.))+import Pandora.Pattern.Morphism.Straight (Straight (Straight)) import Pandora.Pattern.Category (identity, ($), (#))---import Pandora.Pattern.Functor (Endofunctor)-import Pandora.Pattern.Functor.Covariant (Covariant ((-<$>-)))-import Pandora.Pattern.Functor.Semimonoidal (Semimonoidal (multiply))+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 ((=<<)))@@ -18,41 +18,44 @@ import Pandora.Paradigm.Primary.Object.Ordering (Ordering (Less, Greater)) import Pandora.Paradigm.Primary.Algebraic.Product ((:*:) ((:*:))) import Pandora.Paradigm.Primary.Algebraic.Sum ((:+:) (Option, Adoption))-import Pandora.Paradigm.Primary.Transformer.Flip (Flip (Flip))+import Pandora.Pattern.Morphism.Flip (Flip (Flip)) import Pandora.Paradigm.Controlflow.Effect.Interpreted (Schematic, Interpreted (Primary, run, unite)) import Pandora.Paradigm.Controlflow.Effect.Transformer.Monadic (Monadic (wrap), (:>) (TM)) import Pandora.Paradigm.Controlflow.Effect.Adaptable (Adaptable (adapt)) import Pandora.Paradigm.Schemes.UT (UT (UT), type (<.:>))+import Pandora.Paradigm.Primary.Algebraic.Exponential (type (-->)) import Pandora.Paradigm.Primary.Algebraic.One (One (One)) import Pandora.Paradigm.Primary.Algebraic (point) data Conclusion e a = Failure e | Success a instance Covariant (->) (->) (Conclusion e) where- f -<$>- Success x = Success $ f x- _ -<$>- Failure y = Failure y+ f <$> Success x = Success $ f x+ _ <$> Failure y = Failure y instance Covariant (->) (->) (Flip Conclusion e) where- _ -<$>- Flip (Success x) = Flip $ Success x- f -<$>- Flip (Failure y) = Flip . Failure $ f y+ _ <$> Flip (Success x) = Flip $ Success x+ f <$> Flip (Failure y) = Flip . Failure $ f y -instance Semimonoidal (->) (:*:) (:*:) (Conclusion e) where- multiply (Success x :*: Success y) = Success $ x :*: y- multiply (Failure x :*: _) = Failure x- multiply (_ :*: Failure x) = Failure x+instance Semimonoidal (-->) (:*:) (:*:) (Conclusion e) where+ mult = Straight $ \case+ Success x :*: Success y -> Success $ x :*: y+ Failure x :*: _ -> Failure x+ _ :*: Failure x -> Failure x -instance Monoidal (->) (->) (:*:) (:*:) (Conclusion e) where- unit _ f = Success $ f One+instance Monoidal (-->) (->) (:*:) (:*:) (Conclusion e) where+ unit _ = Straight $ Success . ($ One) -instance Semigroup e => Semimonoidal (->) (:*:) (:+:) (Conclusion e) where- multiply (Failure _ :*: x) = Adoption -<$>- x- multiply (Success x :*: _) = Option -<$>- Success x+instance Semigroup e => Semimonoidal (-->) (:*:) (:+:) (Conclusion e) where+ mult = Straight $ \case+ Failure _ :*: x -> Adoption <$> x+ Success x :*: _ -> Option <$> Success x instance Traversable (->) (->) (Conclusion e) where- (<<-) :: (Covariant (->) (->) u, Monoidal (->) (->) (:*:) (:*:) u, Semimonoidal (->) (:*:) (:*:)u)+ (<<-) :: (Covariant (->) (->) u, Monoidal (-->) (->) (:*:) (:*:) u, Semimonoidal (-->) (:*:) (:*:) u) => (a -> u b) -> Conclusion e a -> u (Conclusion e b) _ <<- Failure y = point $ Failure y- f <<- Success x = Success -<$>- f x+ f <<- Success x = Success <$> f x instance Bindable (->) (Conclusion e) where f =<< Success x = f x@@ -88,7 +91,7 @@ fail f (Failure x) = Failure $ f x fail _ (Success y) = Success y -instance Interpreted (Conclusion e) where+instance Interpreted (->) (Conclusion e) where type Primary (Conclusion e) a = Conclusion e a run = identity unite = identity@@ -110,6 +113,6 @@ catch (Failure e) handle = handle e catch (Success x) _ = Success x -instance (Monoidal (->) (->) (:*:) (:*:) u, Bindable (->) u) => Catchable e (Conclusion e <.:> u) where+instance (Monoidal (-->) (->) (:*:) (:*:) u, Bindable (->) u) => Catchable e (Conclusion e <.:> u) where catch (UT x) handle = let conclude = conclusion # run . handle # point . Success in UT $ conclude =<< x
Pandora/Paradigm/Primary/Functor/Constant.hs view
@@ -2,8 +2,8 @@ import Pandora.Pattern.Semigroupoid ((.)) import Pandora.Pattern.Category (($))-import Pandora.Pattern.Functor.Covariant (Covariant ((-<$>-)))-import Pandora.Pattern.Functor.Contravariant (Contravariant ((->$<-)))+import Pandora.Pattern.Functor.Covariant (Covariant ((<$>)))+import Pandora.Pattern.Functor.Contravariant (Contravariant ((>$<))) import Pandora.Pattern.Functor.Invariant (Invariant ((<$<))) import Pandora.Pattern.Functor.Bivariant (Bivariant ((<->))) import Pandora.Pattern.Object.Setoid (Setoid ((==)))@@ -16,18 +16,18 @@ import Pandora.Pattern.Object.Lattice (Lattice) import Pandora.Pattern.Object.Group (Group (invert)) import Pandora.Paradigm.Primary.Algebraic.Exponential ()-import Pandora.Paradigm.Primary.Transformer.Flip (Flip (Flip))+import Pandora.Pattern.Morphism.Flip (Flip (Flip)) newtype Constant a b = Constant a instance Covariant (->) (->) (Constant a) where- _ -<$>- Constant x = Constant x+ _ <$> Constant x = Constant x instance Covariant (->) (->) (Flip Constant b) where- f -<$>- Flip (Constant x) = Flip . Constant $ f x+ f <$> Flip (Constant x) = Flip . Constant $ f x instance Contravariant (->) (->) (Constant a) where- _ ->$<- Constant x = Constant x+ _ >$< Constant x = Constant x instance Invariant (Constant a) where _ <$< _ = \(Constant x) -> Constant x
Pandora/Paradigm/Primary/Functor/Convergence.hs view
@@ -1,10 +1,10 @@ module Pandora.Paradigm.Primary.Functor.Convergence where import Pandora.Pattern.Category (($), (#))-import Pandora.Pattern.Functor.Contravariant (Contravariant ((->$<-)))+import Pandora.Pattern.Functor.Contravariant (Contravariant ((>$<))) import Pandora.Paradigm.Primary.Algebraic () data Convergence r a = Convergence (a -> a -> r) instance Contravariant (->) (->) (Convergence r) where- f ->$<- Convergence g = Convergence $ \x y -> g # f x # f y+ f >$< Convergence g = Convergence $ \x y -> g # f x # f y
Pandora/Paradigm/Primary/Functor/Edges.hs view
@@ -1,7 +1,7 @@ module Pandora.Paradigm.Primary.Functor.Edges where import Pandora.Pattern.Category (($))-import Pandora.Pattern.Functor.Covariant (Covariant ((-<$>-)))+import Pandora.Pattern.Functor.Covariant (Covariant ((<$>))) import Pandora.Pattern.Functor.Traversable (Traversable ((<<-))) import Pandora.Paradigm.Primary.Algebraic.Exponential () import Pandora.Paradigm.Primary.Algebraic (point)@@ -9,16 +9,16 @@ data Edges a = Empty | Leap a | Connect a | Overlay a instance Covariant (->) (->) Edges where- _ -<$>- Empty = Empty- f -<$>- Connect x = Connect $ f x- f -<$>- Overlay x = Overlay $ f x- f -<$>- Leap x = Leap $ f x+ _ <$> Empty = Empty+ f <$> Connect x = Connect $ f x+ f <$> Overlay x = Overlay $ f x+ f <$> Leap x = Leap $ f x instance Traversable (->) (->) Edges where _ <<- Empty = point Empty- f <<- Connect x = Connect -<$>- f x- f <<- Overlay x = Overlay -<$>- f x- f <<- Leap x = Leap -<$>- f x+ f <<- Connect x = Connect <$> f x+ f <<- Overlay x = Overlay <$> f x+ f <<- Leap x = Leap <$> f x edges :: r -> (a -> r) -> (a -> r) -> (a -> r) -> Edges a -> r edges r _ _ _ Empty = r
Pandora/Paradigm/Primary/Functor/Endo.hs view
@@ -11,7 +11,7 @@ newtype Endo a = Endo { endo :: a -> a } -instance Interpreted Endo where+instance Interpreted (->) Endo where type Primary Endo a = a -> a run ~(Endo x) = x unite = Endo
Pandora/Paradigm/Primary/Functor/Fix.hs view
@@ -2,16 +2,16 @@ import Pandora.Core.Functor (type (<:=), type (:=>)) import Pandora.Pattern.Semigroupoid ((.))-import Pandora.Pattern.Functor.Covariant (Covariant ((-<$>-)))+import Pandora.Pattern.Functor.Covariant (Covariant ((<$>))) import Pandora.Paradigm.Primary.Algebraic.Exponential () newtype Fix t = Fix { unfix :: t (Fix t) } cata :: Covariant (->) (->) t => (a <:= t) -> Fix t -> a-cata f = f . (cata f -<$>-) . unfix+cata f = f . (cata f <$>) . unfix ana :: Covariant (->) (->) t => (a :=> t) -> a -> Fix t-ana f = Fix . (ana f -<$>-) . f+ana f = Fix . (ana f <$>) . f hylo :: Covariant (->) (->) t => (b <:= t) -> (a :=> t) -> (a -> b) hylo phi psi = cata phi . ana psi
Pandora/Paradigm/Primary/Functor/Identity.hs view
@@ -2,12 +2,15 @@ import Pandora.Pattern.Semigroupoid ((.)) import Pandora.Pattern.Category (($))-import Pandora.Pattern.Functor.Covariant (Covariant ((-<$>-)))+import Pandora.Pattern.Morphism.Flip (Flip (Flip))+import Pandora.Pattern.Morphism.Straight (Straight (Straight))+import Pandora.Pattern.Functor.Covariant (Covariant ((<$>))) import Pandora.Pattern.Functor.Traversable (Traversable ((<<-)))-import Pandora.Pattern.Functor.Semimonoidal (Semimonoidal (multiply))+import Pandora.Pattern.Functor.Semimonoidal (Semimonoidal (mult)) import Pandora.Pattern.Functor.Monoidal (Monoidal (unit)) import Pandora.Pattern.Functor.Bindable (Bindable ((=<<))) import Pandora.Pattern.Functor.Extendable (Extendable ((<<=)))+import Pandora.Pattern.Functor.Bivariant ((<->)) import Pandora.Pattern.Functor.Monad (Monad) import Pandora.Pattern.Functor.Comonad (Comonad) --import Pandora.Pattern.Functor.Representable (Representable (Representation, (<#>), tabulate))@@ -21,41 +24,40 @@ import Pandora.Pattern.Object.Semilattice (Infimum ((/\)), Supremum ((\/))) import Pandora.Pattern.Object.Lattice (Lattice) import Pandora.Pattern.Object.Group (Group (invert))-import Pandora.Paradigm.Primary.Algebraic.Exponential (type (<--))+import Pandora.Paradigm.Primary.Algebraic.Exponential (type (<--), type (-->)) import Pandora.Paradigm.Primary.Algebraic.Product ((:*:) ((:*:))) import Pandora.Paradigm.Primary.Algebraic.One (One (One)) import Pandora.Paradigm.Primary.Algebraic (extract)-import Pandora.Paradigm.Primary.Transformer.Flip (Flip (Flip)) newtype Identity a = Identity a instance Covariant (->) (->) Identity where- f -<$>- Identity x = Identity $ f x+ f <$> Identity x = Identity $ f x -instance Semimonoidal (->) (:*:) (:*:) Identity where- multiply (Identity x :*: Identity y) = Identity $ x :*: y+instance Semimonoidal (-->) (:*:) (:*:) Identity where+ mult = Straight $ Identity . (extract <-> extract) -instance Monoidal (->) (->) (:*:) (:*:) Identity where- unit _ f = Identity $ f One+instance Monoidal (-->) (->) (:*:) (:*:) Identity where+ unit _ = Straight $ Identity . ($ One) instance Semimonoidal (<--) (:*:) (:*:) Identity where- multiply = Flip $ \(Identity (x :*: y)) -> Identity x :*: Identity y+ mult = Flip $ \(Identity (x :*: y)) -> Identity x :*: Identity y instance Monoidal (<--) (->) (:*:) (:*:) Identity where unit _ = Flip $ \(Identity x) -> (\_ -> x) instance Traversable (->) (->) Identity where- f <<- Identity x = Identity -<$>- f x+ f <<- Identity x = Identity <$> f x instance Bindable (->) Identity where- f =<< Identity x = f x + f =<< Identity x = f x -instance Monad Identity+instance Monad (->) Identity instance Extendable (->) Identity where f <<= x = Identity . f $ x -instance Comonad Identity (->)+instance Comonad (->) Identity --instance Representable Identity where --type Representation Identity = ()@@ -64,7 +66,7 @@ instance Adjoint (->) (->) Identity Identity where f -| x = Identity . f . Identity $ x- g |- x = extract . extract . (g -<$>-) $ x+ g |- x = extract . extract . (g <$>) $ x instance Setoid a => Setoid (Identity a) where Identity x == Identity y = x == y
Pandora/Paradigm/Primary/Functor/Maybe.hs view
@@ -3,8 +3,10 @@ import Pandora.Core.Functor (type (:.), type (:=)) import Pandora.Pattern.Semigroupoid ((.)) import Pandora.Pattern.Category (identity, ($))-import Pandora.Pattern.Functor.Covariant (Covariant ((-<$>-)))-import Pandora.Pattern.Functor.Semimonoidal (Semimonoidal (multiply))+import Pandora.Pattern.Morphism.Flip (Flip (Flip))+import Pandora.Pattern.Morphism.Straight (Straight (Straight))+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 ((=<<)))@@ -22,44 +24,45 @@ import Pandora.Paradigm.Controlflow.Effect.Adaptable (Adaptable (adapt)) import Pandora.Paradigm.Schemes.UT (UT (UT), type (<.:>)) import Pandora.Paradigm.Structure.Ability.Monotonic (Monotonic (reduce))-import Pandora.Paradigm.Primary.Algebraic.Exponential (type (<--))+import Pandora.Paradigm.Primary.Algebraic.Exponential (type (<--), type (-->)) import Pandora.Paradigm.Primary.Algebraic.Product ((:*:) ((:*:))) import Pandora.Paradigm.Primary.Algebraic.Sum ((:+:) (Option, Adoption)) import Pandora.Paradigm.Primary.Algebraic.One (One (One)) import Pandora.Paradigm.Primary.Algebraic (point)-import Pandora.Paradigm.Primary.Transformer.Flip (Flip (Flip)) data Maybe a = Nothing | Just a instance Covariant (->) (->) Maybe where- f -<$>- Just x = Just $ f x- _ -<$>- Nothing = Nothing+ f <$> Just x = Just $ f x+ _ <$> Nothing = Nothing -instance Semimonoidal (->) (:*:) (:*:) Maybe where- multiply (Just x :*: Just y) = Just $ x :*: y- multiply (Nothing :*: _) = Nothing- multiply (_ :*: Nothing) = Nothing+instance Semimonoidal (-->) (:*:) (:*:) Maybe where+ mult = Straight $ \case+ Just x :*: Just y -> Just $ x :*: y+ Nothing :*: _ -> Nothing+ _ :*: Nothing -> Nothing -instance Semimonoidal (->) (:*:) (:+:) Maybe where- multiply (Just x :*: _) = Just $ Option x- multiply (Nothing :*: Just y) = Just $ Adoption y- multiply (Nothing :*: Nothing) = Nothing+instance Semimonoidal (-->) (:*:) (:+:) Maybe where+ mult = Straight $ \case+ Just x :*: _ -> Just $ Option x+ Nothing :*: Just y -> Just $ Adoption y+ Nothing :*: Nothing -> Nothing -instance Monoidal (->) (->) (:*:) (:*:) Maybe where- unit _ f = Just $ f One+instance Monoidal (-->) (->) (:*:) (:*:) Maybe where+ unit _ = Straight $ Just . ($ One) -instance Monoidal (->) (->) (:*:) (:+:) Maybe where- unit _ _ = Nothing+instance Monoidal (-->) (->) (:*:) (:+:) Maybe where+ unit _ = Straight $ \_ -> Nothing -- TODO: Check laws instance Semimonoidal (<--) (:*:) (:*:) Maybe where- multiply = Flip $ \case+ mult = Flip $ \case Just (x :*: y) -> Just x :*: Just y Nothing -> Nothing :*: Nothing instance Traversable (->) (->) Maybe where _ <<- Nothing = point Nothing- f <<- Just x = Just -<$>- f x+ f <<- Just x = Just <$> f x instance Bindable (->) Maybe where f =<< Just x = f x@@ -100,7 +103,7 @@ type instance Schematic Monad Maybe = (<.:>) Maybe -instance Interpreted Maybe where+instance Interpreted (->) Maybe where type Primary Maybe a = Maybe a run = identity unite = identity
Pandora/Paradigm/Primary/Functor/Predicate.hs view
@@ -3,20 +3,20 @@ import Pandora.Core.Functor (type (~>), type (:=>)) import Pandora.Pattern.Semigroupoid ((.)) import Pandora.Pattern.Category (($))-import Pandora.Pattern.Functor.Contravariant (Contravariant ((->$<-)))+import Pandora.Pattern.Functor.Contravariant (Contravariant ((>$<))) import Pandora.Pattern.Object.Setoid (Setoid ((==))) import Pandora.Paradigm.Primary.Object.Boolean (Boolean (True, False), bool) import Pandora.Paradigm.Controlflow.Effect.Interpreted (Interpreted (Primary, run, unite)) newtype Predicate a = Predicate (a -> Boolean) -instance Interpreted Predicate where+instance Interpreted (->) Predicate where type Primary Predicate a = a -> Boolean run ~(Predicate f) = f unite = Predicate instance Contravariant (->) (->) Predicate where- f ->$<- Predicate g = Predicate $ g . f+ f >$< Predicate g = Predicate $ g . f equate :: Setoid a => a :=> Predicate equate x = Predicate (== x)
Pandora/Paradigm/Primary/Functor/Proxy.hs view
@@ -1,7 +1,7 @@ module Pandora.Paradigm.Primary.Functor.Proxy where -import Pandora.Pattern.Functor.Covariant (Covariant ((-<$>-)))-import Pandora.Pattern.Functor.Contravariant (Contravariant ((->$<-)))+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.Functor.Extendable (Extendable ((<<=)))@@ -11,10 +11,10 @@ data Proxy a = Proxy instance Covariant (->) (->) Proxy where- _ -<$>- Proxy = Proxy+ _ <$> Proxy = Proxy instance Contravariant (->) (->) Proxy where- _ ->$<- _ = Proxy+ _ >$< _ = Proxy instance Distributive (->) (->) Proxy where _ -<< _ = Proxy
Pandora/Paradigm/Primary/Functor/Tagged.hs view
@@ -2,9 +2,11 @@ import Pandora.Core.Functor (type (:=>), type (~>)) import Pandora.Pattern.Semigroupoid ((.))+import Pandora.Pattern.Morphism.Flip (Flip (Flip))+import Pandora.Pattern.Morphism.Straight (Straight (Straight)) import Pandora.Pattern.Category (($))-import Pandora.Pattern.Functor.Covariant (Covariant ((-<$>-)))-import Pandora.Pattern.Functor.Semimonoidal (Semimonoidal (multiply))+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.Distributive (Distributive ((-<<)))@@ -22,11 +24,10 @@ import Pandora.Pattern.Object.Semilattice (Infimum ((/\)), Supremum ((\/))) import Pandora.Pattern.Object.Lattice (Lattice) import Pandora.Pattern.Object.Group (Group (invert))-import Pandora.Paradigm.Primary.Algebraic.Exponential (type (<--))+import Pandora.Paradigm.Primary.Algebraic.Exponential (type (<--), type (-->)) import Pandora.Paradigm.Primary.Algebraic.Product ((:*:) ((:*:))) import Pandora.Paradigm.Primary.Algebraic.One (One (One)) import Pandora.Paradigm.Primary.Algebraic (extract)-import Pandora.Paradigm.Primary.Transformer.Flip (Flip (Flip)) newtype Tagged tag a = Tag a @@ -34,38 +35,38 @@ type (:#) tag = Tagged tag instance Covariant (->) (->) (Tagged tag) where- f -<$>- Tag x = Tag $ f x+ f <$> Tag x = Tag $ f x instance Covariant (->) (->) (Flip Tagged a) where- _ -<$>- Flip (Tag x) = Flip $ Tag x+ _ <$> Flip (Tag x) = Flip $ Tag x -instance Semimonoidal (->) (:*:) (:*:) (Tagged tag) where- multiply (x :*: y) = Tag $ extract x :*: extract y+instance Semimonoidal (-->) (:*:) (:*:) (Tagged tag) where+ mult = Straight $ Tag . (extract <-> extract) -instance Monoidal (->) (->) (:*:) (:*:) (Tagged tag) where- unit _ f = Tag $ f One+instance Monoidal (-->) (->) (:*:) (:*:) (Tagged tag) where+ unit _ = Straight $ Tag . ($ One) instance Semimonoidal (<--) (:*:) (:*:) (Tagged tag) where- multiply = Flip $ \(Tag (x :*: y)) -> Tag x :*: Tag y+ mult = Flip $ \(Tag (x :*: y)) -> Tag x :*: Tag y instance Monoidal (<--) (->) (:*:) (:*:) (Tagged tag) where unit _ = Flip $ \(Tag x) -> (\_ -> x) instance Traversable (->) (->) (Tagged tag) where- f <<- Tag x = Tag -<$>- f x+ f <<- Tag x = Tag <$> f x instance Distributive (->) (->) (Tagged tag) where- f -<< x = Tag $ extract . f -<$>- x+ f -<< x = Tag $ extract . f <$> x instance Bindable (->) (Tagged tag) where f =<< Tag x = f x -instance Monad (Tagged tag)+instance Monad (->) (Tagged tag) instance Extendable (->) (Tagged tag) where f <<= x = Tag . f $ x -instance Comonad (Tagged tag) (->)+instance Comonad (->) (Tagged tag) instance Bivariant (->) (->) (->) Tagged where _ <-> g = \(Tag x) -> Tag $ g x
Pandora/Paradigm/Primary/Functor/These.hs view
@@ -1,7 +1,7 @@ module Pandora.Paradigm.Primary.Functor.These where import Pandora.Pattern.Category (($), (#))-import Pandora.Pattern.Functor.Covariant (Covariant ((-<$>-)))+import Pandora.Pattern.Functor.Covariant (Covariant ((<$>))) import Pandora.Pattern.Functor.Traversable (Traversable ((<<-))) import Pandora.Pattern.Object.Semigroup (Semigroup ((+))) import Pandora.Paradigm.Primary.Algebraic.Exponential ()@@ -10,14 +10,14 @@ data These e a = This a | That e | These e a instance Covariant (->) (->) (These e) where- f -<$>- This x = This $ f x- _ -<$>- That y = That y- f -<$>- These y x = These y $ f x+ f <$> This x = This $ f x+ _ <$> That y = That y+ f <$> These y x = These y $ f x instance Traversable (->) (->) (These e) where- f <<- This x = This -<$>- f x+ f <<- This x = This <$> f x _ <<- That y = point $ That y- f <<- These y x = These y -<$>- f x+ f <<- These y x = These y <$> f x instance (Semigroup e, Semigroup a) => Semigroup (These e a) where This x + This x' = This # x + x'
Pandora/Paradigm/Primary/Functor/Validation.hs view
@@ -2,56 +2,59 @@ import Pandora.Pattern.Semigroupoid ((.)) import Pandora.Pattern.Category (($), (#))-import Pandora.Pattern.Functor.Covariant (Covariant ((-<$>-)))-import Pandora.Pattern.Functor.Semimonoidal (Semimonoidal (multiply))+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.Bivariant (Bivariant ((<->))) import Pandora.Pattern.Object.Setoid (Setoid ((==))) import Pandora.Pattern.Object.Chain (Chain ((<=>))) import Pandora.Pattern.Object.Semigroup (Semigroup ((+)))-import Pandora.Paradigm.Primary.Algebraic.Exponential ()+import Pandora.Paradigm.Primary.Algebraic.Exponential (type (-->)) import Pandora.Paradigm.Primary.Algebraic.Product ((:*:) ((:*:))) import Pandora.Paradigm.Primary.Algebraic.Sum ((:+:) (Option, Adoption)) import Pandora.Paradigm.Primary.Algebraic.One (One (One)) import Pandora.Paradigm.Primary.Algebraic (point)-import Pandora.Paradigm.Primary.Transformer.Flip (Flip (Flip))+import Pandora.Pattern.Morphism.Flip (Flip (Flip))+import Pandora.Pattern.Morphism.Straight (Straight (Straight)) import Pandora.Paradigm.Primary.Object.Boolean (Boolean (False)) import Pandora.Paradigm.Primary.Object.Ordering (Ordering (Less, Greater)) data Validation e a = Flaws e | Validated a instance Covariant (->) (->) (Validation e) where- _ -<$>- Flaws e = Flaws e- f -<$>- Validated x = Validated $ f x- _ -<$>- Flaws e = Flaws e- f -<$>- Validated x = Validated $ f x- _ -<$>- Flaws e = Flaws e- f -<$>- Validated x = Validated $ f x+ _ <$> Flaws e = Flaws e+ f <$> Validated x = Validated $ f x+ _ <$> Flaws e = Flaws e+ f <$> Validated x = Validated $ f x+ _ <$> Flaws e = Flaws e+ f <$> Validated x = Validated $ f x instance Covariant (->) (->) (Flip Validation a) where- f -<$>- Flip (Flaws e) = Flip . Flaws $ f e- _ -<$>- Flip (Validated x) = Flip $ Validated x- f -<$>- Flip (Flaws e) = Flip . Flaws $ f e- _ -<$>- Flip (Validated x) = Flip $ Validated x- f -<$>- Flip (Flaws e) = Flip . Flaws $ f e- _ -<$>- Flip (Validated x) = Flip $ Validated x+ f <$> Flip (Flaws e) = Flip . Flaws $ f e+ _ <$> Flip (Validated x) = Flip $ Validated x+ f <$> Flip (Flaws e) = Flip . Flaws $ f e+ _ <$> Flip (Validated x) = Flip $ Validated x+ f <$> Flip (Flaws e) = Flip . Flaws $ f e+ _ <$> Flip (Validated x) = Flip $ Validated x -instance Semigroup e => Semimonoidal (->) (:*:) (:*:) (Validation e) where- multiply (Validated x :*: Validated y) = Validated $ x :*: y- multiply (Flaws x :*: Flaws y) = Flaws $ x + y- multiply (Validated _ :*: Flaws y) = Flaws y- multiply (Flaws x :*: Validated _) = Flaws x+instance Semigroup e => Semimonoidal (-->) (:*:) (:*:) (Validation e) where+ mult = Straight $ \case+ Validated x :*: Validated y -> Validated $ x :*: y+ Flaws x :*: Flaws y -> Flaws $ x + y+ Validated _ :*: Flaws y -> Flaws y+ Flaws x :*: Validated _ -> Flaws x -instance Semigroup e => Monoidal (->) (->) (:*:) (:*:) (Validation e) where- unit _ f = Validated $ f One+instance Semigroup e => Monoidal (-->) (->) (:*:) (:*:) (Validation e) where+ unit _ = Straight $ Validated . ($ One) -instance Semigroup e => Semimonoidal (->) (:*:) (:+:) (Validation e) where- multiply (Flaws _ :*: y) = Adoption -<$>- y- multiply (Validated x :*: _) = Option -<$>- Validated x+instance Semigroup e => Semimonoidal (-->) (:*:) (:+:) (Validation e) where+ mult = Straight $ \case+ Flaws _ :*: y -> Adoption <$> y+ Validated x :*: _ -> Option <$> Validated x instance Traversable (->) (->) (Validation e) where- f <<- Validated x = Validated -<$>- f x+ f <<- Validated x = Validated <$> f x _ <<- Flaws e = point $ Flaws e instance Bivariant (->) (->) (->) Validation where
Pandora/Paradigm/Primary/Functor/Wedge.hs view
@@ -1,7 +1,7 @@ module Pandora.Paradigm.Primary.Functor.Wedge where import Pandora.Pattern.Category (($))-import Pandora.Pattern.Functor.Covariant (Covariant ((-<$>-)))+import Pandora.Pattern.Functor.Covariant (Covariant ((<$>))) import Pandora.Pattern.Functor.Traversable (Traversable ((<<-))) import Pandora.Paradigm.Primary.Algebraic.Exponential () import Pandora.Paradigm.Primary.Algebraic (point)@@ -9,14 +9,14 @@ data Wedge e a = Nowhere | Here e | There a instance Covariant (->) (->) (Wedge e) where- _ -<$>- Nowhere = Nowhere- _ -<$>- Here x = Here x- f -<$>- There x = There $ f x+ _ <$> Nowhere = Nowhere+ _ <$> Here x = Here x+ f <$> There x = There $ f x instance Traversable (->) (->) (Wedge e) where _ <<- Nowhere = point Nowhere _ <<- Here x = point $ Here x- f <<- There x = There -<$>- f x+ f <<- There x = There <$> f x wedge :: (e -> r) -> (a -> r) -> r -> Wedge e a -> r wedge f _ _ (Here x) = f x
Pandora/Paradigm/Primary/Functor/Wye.hs view
@@ -2,25 +2,25 @@ import Pandora.Core.Functor (type (~>)) import Pandora.Pattern.Category ((#), ($))-import Pandora.Pattern.Functor.Covariant (Covariant ((-<$>-)))-import Pandora.Pattern.Functor.Semimonoidal (Semimonoidal (multiply))+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.Primary.Algebraic.Exponential (type (<--)) import Pandora.Paradigm.Primary.Algebraic.Product ((:*:) ((:*:)))-import Pandora.Paradigm.Primary.Transformer.Flip (Flip (Flip))+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 instance Covariant (->) (->) Wye where- _ -<$>- End = End- f -<$>- Left x = Left # f x- f -<$>- Right y = Right # f y- f -<$>- Both x y = Both # f x # f y+ _ <$> End = End+ f <$> Left x = Left # f x+ f <$> Right y = Right # f y+ f <$> Both x y = Both # f x # f y instance Semimonoidal (<--) (:*:) (:*:) Wye where- multiply = Flip $ \case+ mult = Flip $ \case End -> End :*: End Left (x :*: y) -> Left x :*: Left y Right (x :*: y) -> Right x :*: Right y
Pandora/Paradigm/Primary/Transformer.hs view
@@ -14,11 +14,3 @@ import Pandora.Paradigm.Primary.Transformer.Construction as Exports import Pandora.Paradigm.Primary.Transformer.Reverse as Exports import Pandora.Paradigm.Primary.Transformer.Backwards as Exports-import Pandora.Paradigm.Primary.Transformer.Flip as Exports--import Pandora.Paradigm.Controlflow.Effect.Interpreted (Interpreted (Primary, run, unite))--instance Interpreted (Flip v a) where- type Primary (Flip v a) e = v e a- run ~(Flip x) = x- unite = Flip
Pandora/Paradigm/Primary/Transformer/Backwards.hs view
@@ -2,9 +2,9 @@ import Pandora.Pattern.Semigroupoid ((.)) import Pandora.Pattern.Category (($), (#))-import Pandora.Pattern.Functor.Covariant (Covariant ((-<$>-)))-import Pandora.Pattern.Functor.Contravariant (Contravariant ((->$<-)))-import Pandora.Pattern.Functor.Semimonoidal (Semimonoidal (multiply))+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)) import Pandora.Pattern.Functor.Traversable (Traversable ((<<-))) import Pandora.Pattern.Functor.Distributive (Distributive ((-<<)))@@ -12,45 +12,43 @@ import Pandora.Pattern.Transformer.Liftable (Liftable (lift)) import Pandora.Pattern.Transformer.Lowerable (Lowerable (lower)) import Pandora.Pattern.Transformer.Hoistable (Hoistable ((/|\)))-import Pandora.Paradigm.Primary.Algebraic ((-<*>-))+import Pandora.Paradigm.Primary.Algebraic ((<-*-)) import Pandora.Paradigm.Primary.Algebraic.Product ((:*:) ((:*:)))-import Pandora.Paradigm.Primary.Algebraic.Exponential (type (<--), (%))+import Pandora.Paradigm.Primary.Algebraic.Exponential (type (<--), type (-->), (%)) import Pandora.Paradigm.Primary.Algebraic.One (One (One)) import Pandora.Paradigm.Primary.Algebraic (point, extract)-import Pandora.Paradigm.Primary.Transformer.Flip (Flip (Flip))+import Pandora.Pattern.Morphism.Flip (Flip (Flip))+import Pandora.Pattern.Morphism.Straight (Straight (Straight)) import Pandora.Paradigm.Controlflow.Effect.Interpreted (Interpreted (Primary, run, unite)) newtype Backwards t a = Backwards (t a) instance Covariant (->) (->) t => Covariant (->) (->) (Backwards t) where- f -<$>- Backwards x = Backwards $ f -<$>- x+ f <$> Backwards x = Backwards $ f <$> x -- TODO: check that effects evaluation goes in opposite order-instance (Semimonoidal (->) (:*:) (:*:) t, Covariant (->) (->) t) => Semimonoidal (->) (:*:) (:*:) (Backwards t) where- multiply (Backwards x :*: Backwards y) = Backwards #- ((:*:) %) -<$>- y -<*>- x+instance (Semimonoidal (-->) (:*:) (:*:) t, Covariant (->) (->) t) => Semimonoidal (-->) (:*:) (:*:) (Backwards t) where+ mult = Straight $ \(Backwards x :*: Backwards y) -> Backwards # ((:*:) %) <$> y <-*- x -instance (Covariant (->) (->) t, Monoidal (->) (->) (:*:) (:*:) t) => Monoidal (->) (->) (:*:) (:*:) (Backwards t) where- unit _ f = Backwards . point $ f One+instance (Covariant (->) (->) t, Monoidal (-->) (->) (:*:) (:*:) t) => Monoidal (-->) (->) (:*:) (:*:) (Backwards t) where+ unit _ = Straight $ Backwards . point . ($ One) instance (Semimonoidal (<--) (:*:) (:*:) t, Covariant (->) (->) t) => Semimonoidal (<--) (:*:) (:*:) (Backwards t) where- multiply = Flip $ \(Backwards x) -> - let Flip f = multiply @(<--) @(:*:) @(:*:) in- (Backwards <-> Backwards) $ f x+ mult = Flip $ (Backwards <-> Backwards) . run (mult @(<--)) . run instance (Covariant (->) (->) t, Monoidal (<--) (->) (:*:) (:*:) t) => Monoidal (<--) (->) (:*:) (:*:) (Backwards t) where unit _ = Flip $ \(Backwards x) -> (\_ -> extract x) instance Traversable (->) (->) t => Traversable (->) (->) (Backwards t) where- f <<- Backwards x = Backwards -<$>- f <<- x+ f <<- Backwards x = Backwards <$> f <<- x instance Distributive (->) (->) t => Distributive (->) (->) (Backwards t) where f -<< x = Backwards $ run . f -<< x instance Contravariant (->) (->) t => Contravariant (->) (->) (Backwards t) where- f ->$<- Backwards x = Backwards $ f ->$<- x+ f >$< Backwards x = Backwards $ f >$< x -instance Interpreted (Backwards t) where+instance Interpreted (->) (Backwards t) where type Primary (Backwards t) a = t a run ~(Backwards x) = x unite = Backwards
Pandora/Paradigm/Primary/Transformer/Construction.hs view
@@ -3,25 +3,30 @@ module Pandora.Paradigm.Primary.Transformer.Construction where import Pandora.Core.Functor (type (:.), type (:=), type (:=>), type (~>))+import Pandora.Core.Appliable ((!)) import Pandora.Pattern.Semigroupoid ((.)) import Pandora.Pattern.Category (($), (#))-import Pandora.Pattern.Functor.Covariant (Covariant ((-<$>-)), (-<$$>-))-import Pandora.Pattern.Functor.Semimonoidal (Semimonoidal (multiply))+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.Extendable (Extendable ((<<=))) import Pandora.Pattern.Functor.Comonad (Comonad) import Pandora.Pattern.Functor.Bivariant ((<->)) import Pandora.Pattern.Transformer.Lowerable (Lowerable (lower))-import Pandora.Pattern.Transformer.Hoistable (Hoistable ((/|\), hoist))+import Pandora.Pattern.Transformer.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.Primary.Algebraic ((-<*>-), extract)-import Pandora.Paradigm.Primary.Algebraic.Exponential (type (<--))+import Pandora.Paradigm.Primary.Algebraic ((<-*-), extract)+import Pandora.Paradigm.Primary.Algebraic.Exponential (type (<--), type (-->)) import Pandora.Paradigm.Primary.Algebraic.Product ((:*:) ((:*:)))-import Pandora.Paradigm.Primary.Transformer.Flip (Flip (Flip))+import Pandora.Paradigm.Primary.Algebraic.Sum ((:+:))+import Pandora.Paradigm.Primary.Algebraic.One (One (One))+import Pandora.Paradigm.Primary.Algebraic (empty)+import Pandora.Pattern.Morphism.Flip (Flip (Flip))+import Pandora.Pattern.Morphism.Straight (Straight (Straight)) import Pandora.Paradigm.Controlflow.Effect.Interpreted (run) import Pandora.Paradigm.Structure.Ability.Monotonic (Monotonic (reduce)) import Pandora.Paradigm.Schemes (type (<:.>))@@ -31,33 +36,34 @@ data Construction t a = Construct a (t :. Construction t := a) instance Covariant (->) (->) t => Covariant (->) (->) (Construction t) where- f -<$>- ~(Construct x xs) = Construct # f x # f -<$$>- xs+ f <$> ~(Construct x xs) = Construct # f x # (<$$>) @(->) @(->) f xs -instance (Covariant (->) (->) t, Semimonoidal (->) (:*:) (:*:) t) => Semimonoidal (->) (:*:) (:*:) (Construction t) where- multiply (Construct x xs :*: Construct y ys) = Construct (x :*: y) (multiply @(->) @(:*:) -<$>- multiply (xs :*: ys))+instance (Covariant (->) (->) t, Semimonoidal (-->) (:*:) (:*:) t) => Semimonoidal (-->) (:*:) (:*:) (Construction t) where+ mult = Straight $ \(Construct x xs :*: Construct y ys) -> Construct (x :*: y) $ (mult @(-->) !) <$> (mult @(-->) ! xs :*: ys) instance (Covariant (->) (->) t, Semimonoidal (<--) (:*:) (:*:) t) => Semimonoidal (<--) (:*:) (:*:) (Construction t) where- multiply = Flip $ \(Construct (x :*: y) xys) ->- let Flip f = multiply @(<--) @(:*:) @(:*:) in- let Flip g = multiply @(<--) @(:*:) @(:*:) in- (Construct x <-> Construct y) $ f $ g -<$>- xys+ mult = Flip $ \(Construct (x :*: y) xys) -> (Construct x <-> Construct y)+ $ (mult @(<--) !) $ (mult @(<--) !) <$> xys instance (Covariant (->) (->) t, Semimonoidal (<--) (:*:) (:*:) t) => Monoidal (<--) (->) (:*:) (:*:) (Construction t) where unit _ = Flip $ \(Construct x _) -> (\_ -> x) +instance (Covariant (->) (->) t, Semimonoidal (-->) (:*:) (:*:) t, Monoidal (-->) (->) (:*:) (:+:) t) => Monoidal (-->) (->) (:*:) (:*:) (Construction t) where+ unit _ = Straight $ \f -> Construct # f One # empty+ instance Traversable (->) (->) t => Traversable (->) (->) (Construction t) where- f <<- ~(Construct x xs) = Construct -<$>- f x -<*>- f -<<-<<- xs+ f <<- ~(Construct x xs) = Construct <$> f x <-*- f -<<-<<- xs instance Covariant (->) (->) t => Extendable (->) (Construction t) where- f <<= x = Construct # f x # (f <<=) -<$>- deconstruct x+ 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- lower x = extract -<$>- deconstruct x+ lower x = extract <$> deconstruct x instance (forall u . Semimonoidal (<--) (:*:) (:*:) u) => Hoistable Construction where- f /|\ x = Construct # extract x $ f # hoist f -<$>- deconstruct x+ 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 x == y = (extract x == extract y) * (deconstruct x == deconstruct y)@@ -79,7 +85,7 @@ -- Generate a construction from seed using effectful computation (.-+) :: Covariant (->) (->) t => a :=> t -> a :=> Construction t-f .-+ x = Construct x $ (f .-+) -<$>- f x+f .-+ x = Construct x $ (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
@@ -1,28 +1,29 @@ {-# LANGUAGE UndecidableInstances #-}+ module Pandora.Paradigm.Primary.Transformer.Continuation where import Pandora.Core.Functor (type (:.), type (:=), type (::|:.)) import Pandora.Pattern.Semigroupoid ((.)) import Pandora.Pattern.Category (($), (#))-import Pandora.Pattern.Functor.Covariant (Covariant ((-<$>-)))+import Pandora.Pattern.Functor.Covariant (Covariant ((<$>))) 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.Paradigm.Controlflow.Effect.Interpreted (Interpreted (Primary, run, unite))-import Pandora.Paradigm.Primary.Algebraic.Exponential ((!.), (%))+import Pandora.Paradigm.Primary.Algebraic.Exponential ((!.), (%), type (-->)) import Pandora.Paradigm.Primary.Algebraic.Product ((:*:)) import Pandora.Paradigm.Primary.Algebraic (point) newtype Continuation r t a = Continuation ((->) ::|:. a :. t := r) -instance Interpreted (Continuation r t) where+instance Interpreted (->) (Continuation r t) where type Primary (Continuation r t) a = (->) ::|:. a :. t := r run ~(Continuation x) = x unite = Continuation instance Covariant (->) (->) t => Covariant (->) (->) (Continuation r t) where- f -<$>- Continuation continuation = Continuation $ continuation . (. f)+ f <$> Continuation continuation = Continuation $ continuation . (. f) instance Covariant (->) (->) t => Bindable (->) (Continuation r t) where f =<< x = Continuation $ \g -> run x $ \y -> run # f y # g@@ -37,12 +38,12 @@ cwcc f = Continuation $ \g -> (run % g) . f $ Continuation . (!.) . g -- | Delimit the continuation of any 'shift'-reset :: (forall u . Bindable (->) u, Monad t) => Continuation r t r -> Continuation s t r+reset :: (forall u . Bindable (->) u, Monad (->) t) => Continuation r t r -> Continuation s t r reset = lift . (run % point) -- | Capture the continuation up to the nearest enclosing 'reset' and pass it-shift :: Monoidal (->) (->) (:*:) (:*:) t => ((a -> t r) -> Continuation r t r) -> Continuation r t a+shift :: Monoidal (-->) (->) (:*:) (:*:) t => ((a -> t r) -> Continuation r t r) -> Continuation r t a shift f = Continuation $ (run % point) . f -interruptable :: Monoidal (->) (->) (:*:) (:*:) t => ((a -> Continuation a t a) -> Continuation a t a) -> t a+interruptable :: Monoidal (-->) (->) (:*:) (:*:) t => ((a -> Continuation a t a) -> Continuation a t a) -> t a interruptable = (run % point) . cwcc
Pandora/Paradigm/Primary/Transformer/Day.hs view
@@ -3,7 +3,7 @@ module Pandora.Paradigm.Primary.Transformer.Day where import Pandora.Pattern.Category ((#))-import Pandora.Pattern.Functor.Covariant (Covariant ((-<$>-)))+import Pandora.Pattern.Functor.Covariant (Covariant ((<$>))) import Pandora.Pattern.Functor.Extendable (Extendable ((<<=))) import Pandora.Pattern.Transformer.Hoistable (Hoistable ((/|\))) import Pandora.Paradigm.Primary.Algebraic.Exponential ((!..), (-.#..-))@@ -11,7 +11,7 @@ data Day t u a = forall b c . Day (t b) (u c) (b -> c -> a) instance Covariant (->) (->) (Day t u) where- f -<$>- Day tb uc g = Day tb uc # f -.#..- g+ f <$> Day tb uc g = Day tb uc # f -.#..- g instance (Extendable (->) t, Extendable (->) u) => Extendable (->) (Day t u) where f <<= day@(Day tb uc _) = Day tb uc (f day !..)
− Pandora/Paradigm/Primary/Transformer/Flip.hs
@@ -1,3 +0,0 @@-module Pandora.Paradigm.Primary.Transformer.Flip where--newtype Flip (v :: * -> * -> *) a e = Flip (v e a)
Pandora/Paradigm/Primary/Transformer/Instruction.hs view
@@ -3,17 +3,20 @@ module Pandora.Paradigm.Primary.Transformer.Instruction where import Pandora.Core.Functor (type (:.), type (:=))+import Pandora.Core.Appliable ((!))+import Pandora.Pattern.Semigroupoid ((.)) import Pandora.Pattern.Category (($))-import Pandora.Pattern.Functor.Covariant (Covariant ((-<$>-)), (-<$$>-))-import Pandora.Pattern.Functor.Semimonoidal (Semimonoidal (multiply))+import Pandora.Pattern.Morphism.Straight (Straight (Straight))+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 ((/|\), hoist))-import Pandora.Paradigm.Primary.Algebraic.Exponential ()+import Pandora.Pattern.Transformer.Hoistable (Hoistable ((/|\)))+import Pandora.Paradigm.Primary.Algebraic.Exponential (type (-->)) import Pandora.Paradigm.Primary.Algebraic.Product ((:*:)((:*:))) import Pandora.Paradigm.Primary.Algebraic.One (One (One)) import Pandora.Paradigm.Primary.Algebraic (point)@@ -21,35 +24,36 @@ data Instruction t a = Enter a | Instruct (t :. Instruction t := a) instance Covariant (->) (->) t => Covariant (->) (->) (Instruction t) where- f -<$>- Enter x = Enter $ f x- f -<$>- Instruct xs = Instruct $ f -<$$>- xs+ f <$> Enter x = Enter $ f x+ f <$> Instruct xs = Instruct $ (<$$>) @(->) @(->) f xs -instance (Covariant (->) (->) t, Semimonoidal (->) (:*:) (:*:) t) => Semimonoidal (->) (:*:) (:*:) (Instruction t) where- multiply (Enter x :*: Enter y) = Enter $ x :*: y- multiply (Enter x :*: Instruct y) = (x :*:) -<$>- Instruct y- multiply (Instruct x :*: Enter y) = (:*: y) -<$>- Instruct x- multiply (Instruct x :*: Instruct y) = Instruct $ multiply @(->) @(:*:) -<$>- multiply (x :*: y)+instance (Covariant (->) (->) t, Semimonoidal (-->) (:*:) (:*:) t) => Semimonoidal (-->) (:*:) (:*:) (Instruction t) where+ mult = Straight $ \case+ Enter x :*: Enter y -> Enter $ x :*: y+ Enter x :*: Instruct y -> (x :*:) <$> Instruct y+ Instruct x :*: Enter y -> (:*: y) <$> Instruct x+ Instruct x :*: Instruct y -> Instruct $ (mult @(-->) !) <$> (mult @(-->) ! x :*: y) -instance (Covariant (->) (->) t, Semimonoidal (->) (:*:) (:*:) t) => Monoidal (->) (->) (:*:) (:*:) (Instruction t) where- unit _ f = Enter $ f One+instance (Covariant (->) (->) t, Semimonoidal (-->) (:*:) (:*:) t) => Monoidal (-->) (->) (:*:) (:*:) (Instruction t) where+ unit _ = Straight $ Enter . ($ One) instance Covariant (->) (->) t => Bindable (->) (Instruction t) where f =<< Enter x = f x- f =<< Instruct xs = Instruct $ (f =<<) -<$>- xs+ f =<< Instruct xs = Instruct $ (f =<<) <$> xs -instance Monad t => Monad (Instruction t) where+instance Monad (->) t => Monad (->) (Instruction t) where instance Traversable (->) (->) t => Traversable (->) (->) (Instruction t) where- f <<- Enter x = Enter -<$>- f x- f <<- Instruct xs = Instruct -<$>- f -<<-<<- xs+ f <<- Enter x = Enter <$> f x+ f <<- Instruct xs = Instruct <$> f -<<-<<- xs instance Liftable (->) Instruction where- lift x = Instruct $ Enter -<$>- x+ lift x = Instruct $ Enter <$> x -instance (forall t . Bindable (->) t, forall t . Monoidal (->) (->) (:*:) (:*:) t) => Lowerable (->) Instruction where+instance (forall t . Bindable (->) t, forall t . Monoidal (-->) (->) (:*:) (:*:) t) => Lowerable (->) Instruction where lower (Enter x) = point x lower (Instruct xs) = lower =<< xs instance (forall v . Covariant (->) (->) v) => Hoistable Instruction where _ /|\ Enter x = Enter x- f /|\ Instruct xs = Instruct $ hoist f -<$>- f xs+ f /|\ Instruct xs = Instruct $ (f /|\) <$> f xs
Pandora/Paradigm/Primary/Transformer/Jack.hs view
@@ -4,7 +4,7 @@ import Pandora.Pattern.Semigroupoid ((.)) import Pandora.Pattern.Category (identity, ($))-import Pandora.Pattern.Functor.Covariant (Covariant ((-<$>-)))+import Pandora.Pattern.Functor.Covariant (Covariant ((<$>))) import Pandora.Pattern.Functor.Monoidal (Monoidal) import Pandora.Pattern.Functor.Traversable (Traversable ((<<-))) import Pandora.Pattern.Functor.Bindable (Bindable ((=<<)))@@ -13,7 +13,7 @@ import Pandora.Pattern.Transformer.Hoistable (Hoistable ((/|\))) import Pandora.Pattern.Object.Setoid (Setoid ((==))) import Pandora.Pattern.Object.Chain (Chain ((<=>)))-import Pandora.Paradigm.Primary.Algebraic.Exponential ()+import Pandora.Paradigm.Primary.Algebraic.Exponential (type (-->)) import Pandora.Paradigm.Primary.Algebraic.Product ((:*:)) import Pandora.Paradigm.Primary.Algebraic (point) import Pandora.Paradigm.Primary.Object.Boolean (Boolean (False))@@ -22,14 +22,14 @@ data Jack t a = It a | Other (t a) instance Covariant (->) (->) t => Covariant (->) (->) (Jack t) where- f -<$>- It x = It $ f x- f -<$>- Other y = Other $ f -<$>- y+ f <$> It x = It $ f x+ f <$> Other y = Other $ f <$> y instance Traversable (->) (->) t => Traversable (->) (->) (Jack t) where- f <<- It x = It -<$>- f x- f <<- Other y = Other -<$>- f <<- y+ f <<- It x = It <$> f x+ f <<- Other y = Other <$> f <<- y -instance (Monoidal (->) (->) (:*:) (:*:) t, Bindable (->) t) => Bindable (->) (Jack t) where+instance (Monoidal (-->) (->) (:*:) (:*:) t, Bindable (->) t) => Bindable (->) (Jack t) where f =<< It x = f x f =<< Other x = Other $ jack point identity . f =<< x
Pandora/Paradigm/Primary/Transformer/Jet.hs view
@@ -2,14 +2,14 @@ module Pandora.Paradigm.Primary.Transformer.Jet where -import Pandora.Pattern.Functor.Covariant (Covariant ((-<$>-)), (-<$$>-))+import Pandora.Pattern.Functor.Covariant (Covariant ((<$>)), (<$$>)) import Pandora.Pattern.Functor.Traversable (Traversable ((<<-)), (-<<-<<-))-import Pandora.Paradigm.Primary.Algebraic ((-<*>-))+import Pandora.Paradigm.Primary.Algebraic ((<-*-)) data Jet t a = Jet a (Jet t (t a)) instance Covariant (->) (->) t => Covariant (->) (->) (Jet t) where- f -<$>- Jet x xs = Jet (f x) (f -<$$>- xs)+ f <$> Jet x xs = Jet (f x) ((<$$>) @(->) @(->) f xs) instance Traversable (->) (->) t => Traversable (->) (->) (Jet t) where- f <<- Jet x xs = Jet -<$>- f x -<*>- f -<<-<<- xs+ f <<- Jet x xs = Jet <$> f x <-*- f -<<-<<- xs
Pandora/Paradigm/Primary/Transformer/Kan.hs view
@@ -2,8 +2,8 @@ import Pandora.Pattern.Semigroupoid ((.)) import Pandora.Pattern.Category (($))-import Pandora.Pattern.Functor.Contravariant (Contravariant ((->$<-)))-import Pandora.Pattern.Functor.Covariant (Covariant ((-<$>-)))+import Pandora.Pattern.Functor.Contravariant (Contravariant ((>$<)))+import Pandora.Pattern.Functor.Covariant (Covariant ((<$>))) import Pandora.Paradigm.Controlflow.Effect.Interpreted (Interpreted (Primary, run, unite)) import Pandora.Paradigm.Primary.Functor.Wye (Wye (Left, Right)) @@ -12,9 +12,9 @@ data instance Kan Left t u b a = Lan ((t b -> a) -> u b) instance Contravariant (->) (->) (Kan Left t u b) where- f ->$<- Lan x = Lan $ x . (f .)+ f >$< Lan x = Lan $ x . (f .) -instance Interpreted (Kan Left t u b) where+instance Interpreted (->) (Kan Left t u b) where type Primary (Kan Left t u b) a = (t b -> a) -> u b run ~(Lan x) = x unite = Lan@@ -22,9 +22,9 @@ data instance Kan Right t u b a = Ran ((a -> t b) -> u b) instance Covariant (->) (->) (Kan Right t u b) where- f -<$>- Ran x = Ran $ x . (. f)+ f <$> Ran x = Ran $ x . (. f) -instance Interpreted (Kan Right t u b) where+instance Interpreted (->) (Kan Right t u b) where type Primary (Kan Right t u b) a = (a -> t b) -> u b run ~(Ran x) = x unite = Ran
Pandora/Paradigm/Primary/Transformer/Outline.hs view
@@ -4,7 +4,7 @@ import Pandora.Pattern.Semigroupoid ((.)) import Pandora.Pattern.Category (identity, ($), (#))-import Pandora.Pattern.Functor.Covariant (Covariant ((-<$>-)))+import Pandora.Pattern.Functor.Covariant (Covariant ((<$>))) import Pandora.Pattern.Transformer.Liftable (Liftable (lift)) import Pandora.Pattern.Transformer.Hoistable (Hoistable ((/|\))) import Pandora.Paradigm.Primary.Algebraic.Exponential ()@@ -14,8 +14,8 @@ Outlined :: t a -> Outline t (a -> b) -> Outline t b instance Covariant (->) (->) (Outline t) where- f -<$>- Line a = Line $ f a- f -<$>- Outlined x y = Outlined x # (.) f -<$>- y+ f <$> Line a = Line $ f a+ f <$> Outlined x y = Outlined x # (.) f <$> y instance Liftable (->) Outline where lift t = Outlined t (Line identity)
Pandora/Paradigm/Primary/Transformer/Reverse.hs view
@@ -2,11 +2,12 @@ module Pandora.Paradigm.Primary.Transformer.Reverse where +import Pandora.Core.Appliable ((!)) import Pandora.Pattern.Semigroupoid ((.)) import Pandora.Pattern.Category (($), (#))-import Pandora.Pattern.Functor.Covariant (Covariant ((-<$>-)))-import Pandora.Pattern.Functor.Contravariant (Contravariant ((->$<-)))-import Pandora.Pattern.Functor.Semimonoidal (Semimonoidal (multiply))+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)) import Pandora.Pattern.Functor.Traversable (Traversable ((<<-))) import Pandora.Pattern.Functor.Distributive (Distributive ((-<<)))@@ -15,42 +16,41 @@ import Pandora.Pattern.Transformer.Lowerable (Lowerable (lower)) import Pandora.Pattern.Transformer.Hoistable (Hoistable ((/|\))) import Pandora.Paradigm.Primary.Transformer.Backwards (Backwards (Backwards))-import Pandora.Paradigm.Primary.Algebraic.Exponential (type (<--))+import Pandora.Paradigm.Primary.Algebraic.Exponential (type (<--), type (-->)) import Pandora.Paradigm.Primary.Algebraic.Product ((:*:) ((:*:))) import Pandora.Paradigm.Primary.Algebraic.One (One (One)) import Pandora.Paradigm.Primary.Algebraic (point, extract)-import Pandora.Paradigm.Primary.Transformer.Flip (Flip (Flip))+import Pandora.Pattern.Morphism.Flip (Flip (Flip))+import Pandora.Pattern.Morphism.Straight (Straight (Straight)) import Pandora.Paradigm.Controlflow.Effect.Interpreted (Interpreted (Primary, run, unite)) newtype Reverse t a = Reverse (t a) instance Covariant (->) (->) t => Covariant (->) (->) (Reverse t) where- f -<$>- Reverse x = Reverse # f -<$>- x+ f <$> Reverse x = Reverse # f <$> x -instance (Semimonoidal (->) (:*:) (:*:) t, Covariant (->) (->) t) => Semimonoidal (->) (:*:) (:*:) (Reverse t) where- multiply (Reverse x :*: Reverse y) = Reverse # multiply (x :*: y)+instance (Semimonoidal (-->) (:*:) (:*:) t, Covariant (->) (->) t) => Semimonoidal (-->) (:*:) (:*:) (Reverse t) where+ mult = Straight $ \(Reverse x :*: Reverse y) -> Reverse ! mult @(-->) ! (x :*: y) -instance (Covariant (->) (->) t, Monoidal (->) (->) (:*:) (:*:) t) => Monoidal (->) (->) (:*:) (:*:) (Reverse t) where- unit _ f = Reverse . point $ f One+instance (Covariant (->) (->) t, Monoidal (-->) (->) (:*:) (:*:) t) => Monoidal (-->) (->) (:*:) (:*:) (Reverse t) where+ unit _ = Straight $ Reverse . point . ($ One) instance (Semimonoidal (<--) (:*:) (:*:) t, Covariant (->) (->) t) => Semimonoidal (<--) (:*:) (:*:) (Reverse t) where- multiply = Flip $ \(Reverse x) -> - let Flip f = multiply @(<--) @(:*:) @(:*:) in- (Reverse <-> Reverse) $ f x+ mult = Flip $ (Reverse <-> Reverse) . run (mult @(<--)) . run instance (Covariant (->) (->) t, Monoidal (<--) (->) (:*:) (:*:) t) => Monoidal (<--) (->) (:*:) (:*:) (Reverse t) where unit _ = Flip $ \(Reverse x) -> (\_ -> extract x) instance Traversable (->) (->) t => Traversable (->) (->) (Reverse t) where- f <<- Reverse x = Reverse -<$>- run (Backwards . f <<- x)+ f <<- Reverse x = Reverse <$> run (Backwards . f <<- x) instance Distributive (->) (->) t => Distributive (->) (->) (Reverse t) where f -<< x = Reverse $ run . f -<< x instance Contravariant (->) (->) t => Contravariant (->) (->) (Reverse t) where- f ->$<- Reverse x = Reverse # f ->$<- x+ f >$< Reverse x = Reverse # f >$< x -instance Interpreted (Reverse t) where+instance Interpreted (->) (Reverse t) where type Primary (Reverse t) a = t a run ~(Reverse x) = x unite = Reverse
Pandora/Paradigm/Primary/Transformer/Tap.hs view
@@ -3,24 +3,27 @@ module Pandora.Paradigm.Primary.Transformer.Tap where import Pandora.Core.Functor (type (:=))+import Pandora.Core.Appliable ((!)) import Pandora.Pattern.Semigroupoid ((.)) import Pandora.Pattern.Category (($), (#))-import Pandora.Pattern.Functor.Covariant (Covariant ((-<$>-)))-import Pandora.Pattern.Functor.Semimonoidal (Semimonoidal (multiply))+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.Extendable (Extendable ((<<=)))+import Pandora.Pattern.Functor.Bivariant ((<->)) import Pandora.Pattern.Transformer.Liftable (Liftable (lift)) import Pandora.Pattern.Transformer.Lowerable (Lowerable (lower)) import Pandora.Pattern.Transformer.Hoistable (Hoistable ((/|\))) import Pandora.Paradigm.Inventory.Store (Store (Store))-import Pandora.Paradigm.Controlflow.Effect.Interpreted (run) -import Pandora.Paradigm.Primary.Algebraic ((-<*>-), extract)+import Pandora.Paradigm.Controlflow.Effect.Interpreted (run)+import Pandora.Paradigm.Primary.Algebraic ((<-*-), extract) import Pandora.Paradigm.Primary.Algebraic.Product ((:*:) ((:*:)), twosome)-import Pandora.Paradigm.Primary.Algebraic.Exponential (type (<--), (%))+import Pandora.Paradigm.Primary.Algebraic.Exponential (type (<--), type (-->), (%)) import Pandora.Paradigm.Primary.Functor.Identity (Identity (Identity)) import Pandora.Paradigm.Primary.Functor.Wye (Wye (Left, Right))-import Pandora.Paradigm.Primary.Transformer.Flip (Flip (Flip))+import Pandora.Pattern.Morphism.Flip (Flip (Flip))+import Pandora.Pattern.Morphism.Straight (Straight (Straight)) import Pandora.Paradigm.Primary.Transformer.Reverse (Reverse (Reverse)) import Pandora.Paradigm.Schemes.T_U (T_U (T_U), type (<:.:>)) import Pandora.Paradigm.Schemes.P_Q_T (P_Q_T (P_Q_T))@@ -30,21 +33,20 @@ data Tap t a = Tap a (t a) instance Covariant (->) (->) t => Covariant (->) (->) (Tap t) where- f -<$>- Tap x xs = Tap # f x # f -<$>- xs+ f <$> Tap x xs = Tap # f x # f <$> xs -instance Semimonoidal (->) (:*:) (:*:) t => Semimonoidal (->) (:*:) (:*:) (Tap t) where- multiply (Tap x xs :*: Tap y ys) = Tap (x :*: y) $ multiply $ xs :*: ys+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- multiply = Flip $ \(Tap (x :*: y) xys) -> - let Flip f = multiply @(<--) @(:*:) @(:*:) in- let (xs :*: ys) = f xys in Tap x xs :*: Tap y ys+ mult = Flip $ \(Tap (x :*: y) xys) ->+ (Tap x <-> Tap y) $ mult @(<--) ! xys instance Semimonoidal (<--) (:*:) (:*:) t => Monoidal (<--) (->) (:*:) (:*:) (Tap t) where unit _ = Flip $ \(Tap x _) -> (\_ -> x) instance Traversable (->) (->) t => Traversable (->) (->) (Tap t) where- f <<- Tap x xs = Tap -<$>- f x -<*>- f <<- xs+ f <<- Tap x xs = Tap <$> f x <-*- f <<- xs instance (Semimonoidal (<--) (:*:) (:*:) t, Extendable (->) t, Covariant (->) (->) t) => Extendable (->) (Tap t) where f <<= x = Tap # f x $ f . Tap (extract x) <<= lower x@@ -55,13 +57,13 @@ instance Hoistable Tap where f /|\ Tap x xs = Tap x # f xs -instance {-# OVERLAPS #-} Semimonoidal (->) (:*:) (:*:) t => Semimonoidal (->) (:*:) (:*:) (Tap (t <:.:> t := (:*:))) where- multiply (Tap x (T_U (xls :*: xrs)) :*: Tap y (T_U (yls :*: yrs))) = Tap (x :*: y)- $ T_U $ multiply (xls :*: yls) :*: multiply (xrs :*: yrs)+instance {-# OVERLAPS #-} Semimonoidal (-->) (:*:) (:*:) t => Semimonoidal (-->) (:*:) (:*:) (Tap (t <:.:> t := (:*:))) where+ mult = Straight $ \(Tap x (T_U (xls :*: xrs)) :*: Tap y (T_U (yls :*: yrs))) -> Tap (x :*: y)+ $ T_U $ (mult @(-->) ! (xls :*: yls)) :*: (mult @(-->) ! (xrs :*: yrs)) instance {-# OVERLAPS #-} Traversable (->) (->) t => Traversable (->) (->) (Tap (t <:.:> t := (:*:))) where f <<- Tap x (T_U (future :*: past)) = (\past' x' future' -> Tap x' $ twosome # future' # run past')- -<$>- f <<- Reverse past -<*>- f x -<*>- f <<- future+ <$> f <<- Reverse past <-*- f x <-*- f <<- future instance (Covariant (->) (->) t) => Substructure Root (Tap (t <:.:> t := (:*:))) where type Available Root (Tap (t <:.:> t := (:*:))) = Identity
Pandora/Paradigm/Primary/Transformer/Yoneda.hs view
@@ -3,7 +3,7 @@ module Pandora.Paradigm.Primary.Transformer.Yoneda where import Pandora.Pattern.Semigroupoid ((.))-import Pandora.Pattern.Functor.Covariant (Covariant ((-<$>-)))+import Pandora.Pattern.Functor.Covariant (Covariant ((<$>))) import Pandora.Pattern.Transformer.Liftable (Liftable (lift)) import Pandora.Paradigm.Primary.Algebraic.Exponential () @@ -11,7 +11,7 @@ { yoneda :: forall b . (a -> b) -> t b } instance Covariant (->) (->) (Yoneda t) where- f -<$>- x = Yoneda (\k -> yoneda x (k . f))+ f <$> x = Yoneda (\k -> yoneda x (k . f)) instance Liftable (->) Yoneda where- lift x = Yoneda (-<$>- x)+ lift x = Yoneda (<$> x)
Pandora/Paradigm/Schemes/PQ_.hs view
@@ -4,7 +4,7 @@ newtype PQ_ p q a b = PQ_ (p a (q b a)) -instance Interpreted (PQ_ p q a) where+instance Interpreted (->) (PQ_ p q a) where type Primary (PQ_ p q a) b = p a (q b a) run ~(PQ_ x) = x unite = PQ_
Pandora/Paradigm/Schemes/PTU.hs view
@@ -4,7 +4,7 @@ newtype PTU p t u a b = PTU (p (t a) (u b)) -instance Interpreted (PTU p t u a) where+instance Interpreted (->) (PTU p t u a) where type Primary (PTU p t u a) b = p (t a) (u b) run ~(PTU x) = x unite = PTU
Pandora/Paradigm/Schemes/P_Q_T.hs view
@@ -4,7 +4,7 @@ newtype P_Q_T (p :: * -> * -> *) (q :: * -> * -> *) (t :: * -> *) (a :: *) (b :: *) = P_Q_T (p a (q (t b) a)) -instance Interpreted (P_Q_T p q t a) where+instance Interpreted (->) (P_Q_T p q t a) where type Primary (P_Q_T p q t a) b = (p a (q (t b) a)) run ~(P_Q_T x) = x unite = P_Q_T
Pandora/Paradigm/Schemes/P_T.hs view
@@ -4,7 +4,7 @@ newtype P_T p t a b = P_T (p (t a) b) -instance Interpreted (P_T p t a) where+instance Interpreted (->) (P_T p t a) where type Primary (P_T p t a) b = p (t a) b run ~(P_T x) = x unite = P_T
Pandora/Paradigm/Schemes/TU.hs view
@@ -1,11 +1,12 @@ module Pandora.Paradigm.Schemes.TU where import Pandora.Core.Functor (type (:.), type (:=), type (~>))+import Pandora.Core.Appliable ((!)) import Pandora.Pattern.Semigroupoid ((.)) import Pandora.Pattern.Category (($), identity)-import Pandora.Pattern.Functor.Covariant (Covariant, Covariant ((-<$>-)), (-<$$>-))+import Pandora.Pattern.Functor.Covariant (Covariant ((<$>)), (<$$>)) import Pandora.Pattern.Functor.Contravariant (Contravariant)-import Pandora.Pattern.Functor.Semimonoidal (Semimonoidal (multiply))+import Pandora.Pattern.Functor.Semimonoidal (Semimonoidal (mult)) import Pandora.Pattern.Functor.Monoidal (Monoidal (unit)) import Pandora.Pattern.Functor.Traversable (Traversable ((<<-)), (-<<-<<-)) import Pandora.Pattern.Functor.Distributive (Distributive ((-<<)))@@ -14,13 +15,14 @@ import Pandora.Pattern.Transformer.Liftable (Liftable (lift)) import Pandora.Pattern.Transformer.Lowerable (Lowerable (lower)) import Pandora.Pattern.Transformer.Hoistable (Hoistable ((/|\)))-import Pandora.Paradigm.Controlflow.Effect.Interpreted (Interpreted (Primary, run, unite))-import Pandora.Paradigm.Primary.Algebraic.Exponential (type (<--))+import Pandora.Paradigm.Controlflow.Effect.Interpreted (Interpreted (Primary, run, unite, (||=)))+import Pandora.Paradigm.Primary.Algebraic.Exponential (type (<--), type (-->)) import Pandora.Paradigm.Primary.Algebraic.Product ((:*:) ((:*:))) import Pandora.Paradigm.Primary.Algebraic.Sum ((:+:) (Option, Adoption), sum) import Pandora.Paradigm.Primary.Algebraic.One (One (One)) import Pandora.Paradigm.Primary.Algebraic (empty, point, extract)-import Pandora.Paradigm.Primary.Transformer.Flip (Flip (Flip))+import Pandora.Pattern.Morphism.Flip (Flip (Flip))+import Pandora.Pattern.Morphism.Straight (Straight (Straight)) newtype TU ct cu t u a = TU (t :. u := a) @@ -31,42 +33,39 @@ type (<:.<) = TU Covariant Contravariant type (>:.<) = TU Contravariant Contravariant -instance Interpreted (TU ct cu t u) where+instance Interpreted (->) (TU ct cu t u) where type Primary (TU ct cu t u) a = t :. u := a run ~(TU x) = x unite = TU -instance (Covariant (->) (->) t, Covariant (->) (->) u) => Covariant (->) (->) (t <:.> u) where- f -<$>- x = TU $ f -<$$>- run x+instance (Covariant m m t, Covariant m m u, Interpreted m (t <:.> u)) => Covariant m m (t <:.> u) where+ (<$>) f = (||=) ((<$$>) @m @m f) -instance (Covariant (->) (->) t, Semimonoidal (->) (:*:) (:*:) t, Semimonoidal (->) (:*:) (:*:) u) => Semimonoidal (->) (:*:) (:*:) (t <:.> u) where- multiply (TU x :*: TU y) = TU $ multiply @(->) @(:*:) -<$>- multiply (x :*: y)+instance (Covariant (->) (->) t, Semimonoidal (-->) (:*:) (:*:) t, Semimonoidal (-->) (:*:) (:*:) u) => Semimonoidal (-->) (:*:) (:*:) (t <:.> u) where+ mult = Straight $ TU . (<$>) (mult @(-->) !) . (mult @(-->) !) . (run @(->) <-> run @(->)) -instance (Covariant (->) (->) t, Covariant (->) (->) u, Semimonoidal (->) (:*:) (:*:) u, Monoidal (->) (->) (:*:) (:*:) t, Monoidal (->) (->) (:*:) (:*:) u) => Monoidal (->) (->) (:*:) (:*:) (t <:.> u) where- unit _ f = TU . point . point $ f One+instance (Covariant (->) (->) t, Covariant (->) (->) u, Semimonoidal (-->) (:*:) (:*:) u, Monoidal (-->) (->) (:*:) (:*:) t, Monoidal (-->) (->) (:*:) (:*:) u) => Monoidal (-->) (->) (:*:) (:*:) (t <:.> u) where+ unit _ = Straight $ TU . point . point . ($ One) -instance (Covariant (->) (->) t, Covariant (->) (->) u, Semimonoidal (->) (:*:) (:+:) t) => Semimonoidal (->) (:*:) (:+:) (t <:.> u) where- multiply (TU x :*: TU y) = TU $ sum (Option -<$>-) (Adoption -<$>-) -<$>- multiply @(->) @(:*:) @(:+:) (x :*: y)+instance (Covariant (->) (->) t, Covariant (->) (->) u, Semimonoidal (-->) (:*:) (:+:) t) => Semimonoidal (-->) (:*:) (:+:) (t <:.> u) where+ mult = Straight $ \(TU x :*: TU y) -> TU $ sum (Option <$>) (Adoption <$>) <$> (mult @(-->) ! x :*: y) -instance (Covariant (->) (->) t, Covariant (->) (->) u, Monoidal (->) (->) (:*:) (:+:) t) => Monoidal (->) (->) (:*:) (:+:) (t <:.> u) where- unit _ _ = TU empty+instance (Covariant (->) (->) t, Covariant (->) (->) u, Monoidal (-->) (->) (:*:) (:+:) t) => Monoidal (-->) (->) (:*:) (:+:) (t <:.> u) where+ unit _ = Straight $ \_ -> TU empty instance (Covariant (->) (->) t, Semimonoidal (<--) (:*:) (:*:) t, Semimonoidal (<--) (:*:) (:*:) u) => Semimonoidal (<--) (:*:) (:*:) (t <:.> u) where- multiply = Flip $ \(TU xys) ->- let Flip f = multiply @(<--) @(:*:) @(:*:) in- let Flip g = multiply @(<--) @(:*:) @(:*:) in- (TU <-> TU) $ g (f -<$>- xys) where+ mult = Flip $ \(TU xys) -> (TU <-> TU) . (mult @(<--) !) $ (mult @(<--) !) <$> xys instance (Covariant (->) (->) t, Monoidal (<--) (->) (:*:) (:*:) t, Monoidal (<--) (->) (:*:) (:*:) u) => Monoidal (<--) (->) (:*:) (:*:) (t <:.> u) where unit _ = Flip $ \(TU x) -> (\_ -> extract $ extract x) instance (Traversable (->) (->) t, Traversable (->) (->) u) => Traversable (->) (->) (t <:.> u) where- f <<- x = TU -<$>- f -<<-<<- run x+ f <<- x = TU <$> f -<<-<<- run x instance (Bindable (->) t, Distributive (->) (->) t, Covariant (->) (->) u, Bindable (->) u) => Bindable (->) (t <:.> u) where- f =<< TU x = TU $ (\i -> (identity =<<) -<$>- run . f -<< i) =<< x+ f =<< TU x = TU $ (\i -> (identity =<<) <$> run . f -<< i) =<< x -instance Monoidal (->) (->) (:*:) (:*:) t => Liftable (->) (TU Covariant Covariant t) where+instance Monoidal (-->) (->) (:*:) (:*:) t => Liftable (->) (TU Covariant Covariant t) where lift :: Covariant (->) (->) u => u ~> t <:.> u lift = TU . point @@ -76,4 +75,4 @@ instance Covariant (->) (->) t => Hoistable (TU Covariant Covariant t) where (/|\) :: u ~> v -> (t <:.> u ~> t <:.> v)- f /|\ TU x = TU $ f -<$>- x+ f /|\ TU x = TU $ f <$> x
Pandora/Paradigm/Schemes/TUT.hs view
@@ -1,11 +1,12 @@ module Pandora.Paradigm.Schemes.TUT where import Pandora.Core.Functor (type (:.), type (:=), type (~>))+import Pandora.Core.Appliable ((!)) import Pandora.Pattern.Semigroupoid ((.)) import Pandora.Pattern.Category (identity, ($))-import Pandora.Pattern.Functor.Covariant (Covariant, Covariant ((-<$>-)), (-<$$>-), (-<$$$>-))+import Pandora.Pattern.Functor.Covariant (Covariant, Covariant ((<$>)), (<$$>), (<$$$>)) import Pandora.Pattern.Functor.Contravariant (Contravariant)-import Pandora.Pattern.Functor.Semimonoidal (Semimonoidal (multiply))+import Pandora.Pattern.Functor.Semimonoidal (Semimonoidal (mult)) import Pandora.Pattern.Functor.Monoidal (Monoidal (unit)) import Pandora.Pattern.Functor.Extendable (Extendable ((<<=))) import Pandora.Pattern.Functor.Distributive (Distributive ((-<<)))@@ -14,12 +15,13 @@ import Pandora.Pattern.Functor.Adjoint (Adjoint ((-|), (|-))) import Pandora.Pattern.Transformer.Liftable (Liftable (lift)) import Pandora.Pattern.Transformer.Lowerable (Lowerable (lower))-import Pandora.Paradigm.Primary.Algebraic.Exponential (type (<--))+import Pandora.Paradigm.Primary.Algebraic.Exponential (type (<--), type (-->)) import Pandora.Paradigm.Primary.Algebraic.Product ((:*:)((:*:))) import Pandora.Paradigm.Primary.Algebraic.One (One (One)) import Pandora.Paradigm.Primary.Algebraic (point, extract)-import Pandora.Paradigm.Primary.Transformer.Flip (Flip (Flip))-import Pandora.Paradigm.Controlflow.Effect.Interpreted (Interpreted (Primary, run, unite))+import Pandora.Pattern.Morphism.Flip (Flip (Flip))+import Pandora.Pattern.Morphism.Straight (Straight (Straight))+import Pandora.Paradigm.Controlflow.Effect.Interpreted (Interpreted (Primary, run, unite, (||=))) newtype TUT ct ct' cu t t' u a = TUT (t :. u :. t' := a) @@ -34,35 +36,31 @@ type (<:>.<:<) = TUT Covariant Contravariant Contravariant type (>:>.<:<) = TUT Contravariant Contravariant Contravariant -instance Interpreted (TUT ct ct' cu t t' u) where+instance Interpreted (->) (TUT ct ct' cu t t' u) where type Primary (TUT ct ct' cu t t' u) a = t :. u :. t' := a run ~(TUT x) = x unite = TUT -instance (Covariant (->) (->) t, Covariant (->) (->) t', Covariant (->) (->) u) => Covariant (->) (->) (t <:<.>:> t' := u) where- f -<$>- TUT x = TUT $ f -<$$$>- x+instance (Covariant m m t, Covariant m m u, Covariant m m t', Interpreted m (t <:<.>:> t' := u)) => Covariant m m (t <:<.>:> t' := u) where+ (<$>) f = (||=) ((<$$$>) @m @m @m f) -instance (Covariant (->) (->) t, Covariant (->) (->) t', Covariant (->) (->) u, Semimonoidal (->) (:*:) (:*:) t, Semimonoidal (->) (:*:) (:*:) u, Semimonoidal (->) (:*:) (:*:) t') => Semimonoidal (->) (:*:) (:*:) (t <:<.>:> t' := u) where- multiply (TUT x :*: TUT y) = TUT $ multiply @(->) @(:*:) -<$$>- multiply @(->) @(:*:) -<$>- multiply (x :*: y)+instance (Covariant (->) (->) t, Covariant (->) (->) t', Covariant (->) (->) u, Semimonoidal (-->) (:*:) (:*:) t, Semimonoidal (-->) (:*:) (:*:) u, Semimonoidal (-->) (:*:) (:*:) t') => Semimonoidal (-->) (:*:) (:*:) (t <:<.>:> t' := u) where+ mult = Straight $ TUT . (<$$>) @_ @(->) (mult @(-->) !) . (<$>) (mult @(-->) !) . (mult @(-->) !) . (run @(->) <-> run @(->)) instance (Covariant (->) (->) t, Semimonoidal (<--) (:*:) (:*:) t, Covariant (->) (->) u, Semimonoidal (<--) (:*:) (:*:) u, Covariant (->) (->) t', Semimonoidal (<--) (:*:) (:*:) t') => Semimonoidal (<--) (:*:) (:*:) (t <:<.>:> t' := u) where- multiply = Flip $ \(TUT xys) ->- let Flip f = multiply @(<--) @(:*:) @(:*:) in- let Flip g = multiply @(<--) @(:*:) @(:*:) in- let Flip h = multiply @(<--) @(:*:) @(:*:) in- (TUT <-> TUT) $ f (g -<$>- (h -<$$>- xys)) 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 unit _ = Flip $ \(TUT xys) -> (\_ -> (extract |-) xys) instance (Covariant (->) (->) t, Covariant (->) (->) t', Adjoint (->) (->) t' t, Bindable (->) u) => Bindable (->) (t <:<.>:> t' := u) where- f =<< x = TUT $ ((run . f |-) =<<) -<$>- run x+ f =<< x = TUT $ ((run . f |-) =<<) <$> run x -instance (Covariant (->) (->) t, Covariant (->) (->) u, Covariant (->) (->) t', Semimonoidal (->) (:*:) (:*:) t, Semimonoidal (->) (:*:) (:*:) t', Monoidal (->) (->) (:*:) (:*:) u, Adjoint (->) (->) t' t) => Monoidal (->) (->) (:*:) (:*:) (t <:<.>:> t' := u) where- unit _ f = unite . (point -|) . f $ One+instance (Covariant (->) (->) t, Covariant (->) (->) u, Covariant (->) (->) t', Semimonoidal (-->) (:*:) (:*:) t, Semimonoidal (-->) (:*:) (:*:) t', Monoidal (-->) (->) (:*:) (:*:) u, Adjoint (->) (->) t' t) => Monoidal (-->) (->) (:*:) (:*:) (t <:<.>:> t' := u) where+ unit _ = Straight $ unite . (point -|) . ($ One) instance (Adjoint (->) (->) t' t, Extendable (->) u) => Extendable (->) (t' <:<.>:> t := u) where- f <<= x = TUT $ ((f . unite -|) <<=) -<$>- run x+ f <<= x = TUT $ ((f . unite -|) <<=) <$> run x instance (Adjoint (->) (->) t' t, Distributive (->) (->) t) => Liftable (->) (t <:<.>:> t') where lift :: Covariant (->) (->) u => u ~> t <:<.>:> t' := u
Pandora/Paradigm/Schemes/TUVW.hs view
@@ -5,7 +5,7 @@ newtype TUVW ct cu cv cw t u v w a = TUVW (t :. u :. v :. w := a) -instance Interpreted (TUVW ct cu cv cw t u v w) where+instance Interpreted (->) (TUVW ct cu cv cw t u v w) where type Primary (TUVW ct cu cv cw t u v w) a = t :. u :. v :. w := a run ~(TUVW x) = x unite = TUVW
Pandora/Paradigm/Schemes/T_U.hs view
@@ -1,8 +1,8 @@ module Pandora.Paradigm.Schemes.T_U where import Pandora.Core.Functor (type (:=))-import Pandora.Pattern.Functor.Covariant (Covariant, Covariant ((-<$>-)))-import Pandora.Pattern.Functor.Contravariant (Contravariant, Contravariant ((->$<-)))+import Pandora.Pattern.Functor.Covariant (Covariant, Covariant ((<$>)))+import Pandora.Pattern.Functor.Contravariant (Contravariant, Contravariant ((>$<))) import Pandora.Pattern.Functor.Bivariant (Bivariant ((<->))) import Pandora.Pattern.Functor.Divariant (Divariant ((>->))) import Pandora.Paradigm.Controlflow.Effect.Interpreted (Interpreted (Primary, run, unite, (||=)))@@ -16,16 +16,16 @@ type (<:.:<) t u p = T_U Covariant Contravariant p t u type (>:.:<) t u p = T_U Contravariant Contravariant p t u -instance Interpreted (T_U ct cu p t u) where+instance Interpreted (->) (T_U ct cu p t u) where type Primary (T_U ct cu p t u) a = p (t a) (u a) run ~(T_U x) = x unite = T_U instance (forall i . Covariant (->) (->) (p i), Bivariant (->) (->) (->) p, Covariant (->) (->) t, Covariant (->) (->) u) => Covariant (->) (->) (t <:.:> u := p) where- f -<$>- x = (f -<$>-) <-> (f -<$>-) ||= x+ f <$> x = (f <$>) <-> (f <$>) ||= x instance (Divariant (->) (->) (->) p, Contravariant (->) (->) t, Covariant (->) (->) u) => Covariant (->) (->) (t >:.:> u := p) where- f -<$>- x = (f ->$<-) >-> (f -<$>-) ||= x+ f <$> x = (f >$<) >-> (f <$>) ||= x instance (forall i . Covariant (->) (->) (p i), Bivariant (->) (->) (->) p, Contravariant (->) (->) t, Contravariant (->) (->) u) => Contravariant (->) (->) (t >:.:< u := p) where- f ->$<- x = (f ->$<-) <-> (f ->$<-) ||= x+ f >$< x = (f >$<) <-> (f >$<) ||= x
Pandora/Paradigm/Schemes/UT.hs view
@@ -1,22 +1,24 @@ module Pandora.Paradigm.Schemes.UT where import Pandora.Core.Functor (type (:.), type (:=), type (~>))+import Pandora.Core.Appliable ((!)) import Pandora.Pattern.Semigroupoid ((.)) import Pandora.Pattern.Category (($), identity)-import Pandora.Pattern.Functor.Covariant (Covariant, Covariant ((-<$>-)), (-<$$>-))+import Pandora.Pattern.Morphism.Straight (Straight (Straight))+import Pandora.Pattern.Functor.Covariant (Covariant ((<$>)), (<$$>)) import Pandora.Pattern.Functor.Contravariant (Contravariant)-import Pandora.Pattern.Functor.Semimonoidal (Semimonoidal (multiply))+import Pandora.Pattern.Functor.Semimonoidal (Semimonoidal (mult)) import Pandora.Pattern.Functor.Monoidal (Monoidal (unit)) import Pandora.Pattern.Functor.Bindable (Bindable ((=<<))) import Pandora.Pattern.Functor.Traversable (Traversable ((<<-))) import Pandora.Pattern.Functor.Bivariant ((<->)) import Pandora.Pattern.Transformer.Liftable (Liftable (lift)) import Pandora.Pattern.Transformer.Lowerable (Lowerable (lower))-import Pandora.Paradigm.Controlflow.Effect.Interpreted (Interpreted (Primary, run, unite))-import Pandora.Paradigm.Primary.Algebraic.Exponential (type (<--))+import Pandora.Paradigm.Controlflow.Effect.Interpreted (Interpreted (Primary, run, unite, (||=)))+import Pandora.Paradigm.Primary.Algebraic.Exponential (type (<--), type (-->)) import Pandora.Paradigm.Primary.Algebraic.One (One (One)) import Pandora.Paradigm.Primary.Algebraic ((:*:) ((:*:)), point, extract)-import Pandora.Paradigm.Primary.Transformer.Flip (Flip (Flip))+import Pandora.Pattern.Morphism.Flip (Flip (Flip)) newtype UT ct cu t u a = UT (u :. t := a) @@ -27,36 +29,33 @@ type (<.:<) = UT Covariant Contravariant type (>.:<) = UT Contravariant Contravariant -instance Interpreted (UT ct cu t u) where+instance Interpreted (->) (UT ct cu t u) where type Primary (UT ct cu t u) a = u :. t := a run ~(UT x) = x unite = UT -instance (Covariant (->) (->) t, Covariant (->) (->) u) => Covariant (->) (->) (t <.:> u) where- f -<$>- x = UT $ f -<$$>- run x+instance (Covariant m m t, Covariant m m u, Interpreted m (t <.:> u)) => Covariant m m (t <.:> u) where+ (<$>) f = (||=) ((<$$>) @m @m f) -instance (Covariant (->) (->) u, Semimonoidal (->) (:*:) (:*:) t, Semimonoidal (->) (:*:) (:*:) u) => Semimonoidal (->) (:*:) (:*:) (t <.:> u) where- multiply (UT x :*: UT y) = UT $ multiply @(->) @(:*:) -<$>- multiply (x :*: y)+instance (Covariant (->) (->) u, Semimonoidal (-->) (:*:) (:*:) t, Semimonoidal (-->) (:*:) (:*:) u) => Semimonoidal (-->) (:*:) (:*:) (t <.:> u) where+ mult = Straight $ UT . (<$>) (mult @(-->) !) . (mult @(-->) !) . (run @(->) <-> run @(->)) -instance (Covariant (->) (->) t, Covariant (->) (->) u, Semimonoidal (->) (:*:) (:*:) u, Monoidal (->) (->) (:*:) (:*:) t, Monoidal (->) (->) (:*:) (:*:) u) => Monoidal (->) (->) (:*:) (:*:) (t <.:> u) where- unit _ f = UT . point . point $ f One+instance (Covariant (->) (->) t, Covariant (->) (->) u, Semimonoidal (-->) (:*:) (:*:) u, Monoidal (-->) (->) (:*:) (:*:) t, Monoidal (-->) (->) (:*:) (:*:) u) => Monoidal (-->) (->) (:*:) (:*:) (t <.:> u) where+ unit _ = Straight $ UT . point . point . ($ One) -instance (Traversable (->) (->) t, Bindable (->) t, Semimonoidal (->) (:*:) (:*:) u, Monoidal (->) (->) (:*:) (:*:) u, Bindable (->) u) => Bindable (->) (t <.:> u) where- f =<< UT x = UT $ ((identity =<<) -<$>-) . (run . f <<-) =<< x+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- multiply = Flip $ \(UT xys) ->- let Flip f = multiply @(<--) @(:*:) @(:*:) in- let Flip g = multiply @(<--) @(:*:) @(:*:) in- (UT <-> UT) $ f (g -<$>- xys) where+ mult = Flip $ \(UT xys) -> (UT <-> UT) . (mult @(<--) !) $ (mult @(<--) !) <$> xys instance (Covariant (->) (->) u, Monoidal (<--) (->) (:*:) (:*:) t, Monoidal (<--) (->) (:*:) (:*:) u) => Monoidal (<--) (->) (:*:) (:*:) (t <.:> u) where unit _ = Flip $ \(UT x) -> (\_ -> extract $ extract x) -instance Monoidal (->) (->) (:*:) (:*:) t => Liftable (->) (UT Covariant Covariant t) where+instance Monoidal (-->) (->) (:*:) (:*:) t => Liftable (->) (UT Covariant Covariant t) where lift :: Covariant (->) (->) u => u ~> t <.:> u- lift x = UT $ point -<$>- x+ lift x = UT $ point <$> x instance Monoidal (<--) (->) (:*:) (:*:) t => Lowerable (->) (UT Covariant Covariant t) where lower :: Covariant (->) (->) u => t <.:> u ~> u- lower (UT x) = extract -<$>- x+ lower (UT x) = extract <$> x
Pandora/Paradigm/Schemes/UTU.hs view
@@ -16,7 +16,7 @@ type (<.>:<.<) = UTU Covariant Contravariant Contravariant type (>.>:<.<) = UTU Contravariant Contravariant Contravariant -instance Interpreted (UTU ct cu t u u') where+instance Interpreted (->) (UTU ct cu t u u') where type Primary (UTU ct cu t u u') a = u :. t :. u' := a run ~(UTU x) = x unite = UTU
Pandora/Paradigm/Schemes/U_T.hs view
@@ -4,7 +4,7 @@ newtype U_T ct cu t p u a = U_T (p (u a) (t a)) -instance Interpreted (U_T ct cu t p u) where+instance Interpreted (->) (U_T ct cu t p u) where type Primary (U_T ct cu t p u) a = p (u a) (t a) run ~(U_T x) = x unite = U_T
Pandora/Paradigm/Structure.hs view
@@ -10,7 +10,7 @@ import Pandora.Core.Functor (type (:=)) import Pandora.Pattern.Semigroupoid ((.)) import Pandora.Pattern.Category (($), (#))-import Pandora.Pattern.Functor.Covariant (Covariant ((-<$>-)))+import Pandora.Pattern.Functor.Covariant (Covariant ((<$>))) import Pandora.Pattern.Transformer.Liftable (lift) import Pandora.Pattern.Transformer.Lowerable (lower) import Pandora.Pattern.Object.Semigroup ((+))@@ -26,7 +26,7 @@ import Pandora.Paradigm.Primary.Functor.Predicate (Predicate (Predicate)) import Pandora.Paradigm.Primary.Functor.Wye (Wye (Both, Left, Right, End)) import Pandora.Paradigm.Primary.Transformer.Construction (Construction (Construct))-import Pandora.Paradigm.Primary.Transformer.Flip (Flip (Flip))+import Pandora.Pattern.Morphism.Flip (Flip (Flip)) import Pandora.Paradigm.Primary.Transformer.Tap (Tap (Tap)) import Pandora.Paradigm.Schemes.TU (type (<:.>)) import Pandora.Paradigm.Schemes.T_U ( type (<:.:>))@@ -67,7 +67,7 @@ instance Morphable (Into (o ds)) (Construction Wye) => Morphable (Into (o ds)) Binary where type Morphing (Into (o ds)) Binary = Maybe <:.> Morphing (Into (o ds)) (Construction Wye)- morphing (premorph -> xs) = (into @(o ds) -<$>-) ||= xs+ morphing (premorph -> xs) = (into @(o ds) <$>) ||= xs instance Substructure Left (Flip (:*:) a) where type Available Left (Flip (:*:) a) = Identity
Pandora/Paradigm/Structure/Ability.hs view
@@ -3,7 +3,6 @@ import Pandora.Paradigm.Structure.Ability.Monotonic as Exports import Pandora.Paradigm.Structure.Ability.Zipper as Exports import Pandora.Paradigm.Structure.Ability.Substructure as Exports-import Pandora.Paradigm.Structure.Ability.Measurable as Exports import Pandora.Paradigm.Structure.Ability.Morphable as Exports import Pandora.Paradigm.Structure.Ability.Accessible as Exports import Pandora.Paradigm.Structure.Ability.Nullable as Exports
− Pandora/Paradigm/Structure/Ability/Measurable.hs
@@ -1,15 +0,0 @@-{-# LANGUAGE AllowAmbiguousTypes #-}--module Pandora.Paradigm.Structure.Ability.Measurable where--import Pandora.Pattern.Semigroupoid ((.))-import Pandora.Paradigm.Primary.Functor.Tagged (Tagged (Tag))--class Measurable f t where- type Measural (f :: k) (t :: * -> *) a- measurement :: Tagged f (t a) -> Measural f t a--measure :: forall f t a . Measurable f t => t a -> Measural f t a-measure = measurement . Tag @f--data Scale = Length | Heighth | Depth
Pandora/Paradigm/Structure/Ability/Substructure.hs view
@@ -4,7 +4,7 @@ module Pandora.Paradigm.Structure.Ability.Substructure where import Pandora.Core.Functor (type (:=))-import Pandora.Pattern.Functor.Covariant (Covariant ((-<$>-)))+import Pandora.Pattern.Functor.Covariant (Covariant ((<$>))) import Pandora.Pattern.Functor.Divariant ((>->)) import Pandora.Pattern.Transformer.Liftable (lift) import Pandora.Pattern.Transformer.Lowerable (lower)@@ -24,4 +24,4 @@ substructure :: (Tagged segment <:.> structure) #=@ Substance segment structure := Available segment structure sub :: (Covariant (->) (->) structure) => structure #=@ Substance segment structure := Available segment structure- sub = lift @(->) >-> (lower @(->) -<$>-) ||= substructure @segment @structure+ sub = lift @(->) >-> (lower @(->) <$>) ||= substructure @segment @structure
Pandora/Paradigm/Structure/Interface/Set.hs view
@@ -28,4 +28,4 @@ subset = Convergence $ \s ss -> Nothing != (find @f @t @Maybe % s) . equate <<- ss cardinality :: Traversable (->) (->) t => t a -> Numerator-cardinality s = attached . run @(State _) % Zero $ (modify @Numerator (+ one) !.) <<- s+cardinality s = attached . run @(->) @(State _) % Zero $ (modify @Numerator (+ one) !.) <<- s
Pandora/Paradigm/Structure/Modification/Comprehension.hs view
@@ -4,14 +4,17 @@ module Pandora.Paradigm.Structure.Modification.Comprehension where import Pandora.Core.Functor (type (:=))+import Pandora.Core.Appliable ((!)) import Pandora.Pattern.Semigroupoid ((.)) import Pandora.Pattern.Category (($))-import Pandora.Pattern.Functor.Covariant (Covariant ((-<$>-)))-import Pandora.Pattern.Functor.Contravariant ((->$<-))-import Pandora.Pattern.Functor.Semimonoidal (Semimonoidal (multiply))+import Pandora.Pattern.Morphism.Straight (Straight (Straight))+import Pandora.Pattern.Functor.Covariant (Covariant ((<$>)))+import Pandora.Pattern.Functor.Contravariant ((>$<))+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.Bivariant ((<->)) import Pandora.Pattern.Transformer.Liftable (lift) import Pandora.Pattern.Object.Semigroup (Semigroup ((+))) import Pandora.Pattern.Object.Monoid (Monoid (zero))@@ -23,31 +26,29 @@ 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.Structure.Ability.Nullable (Nullable (null))+import Pandora.Paradigm.Primary.Algebraic.Exponential (type (<--), type (-->)) import Pandora.Paradigm.Primary.Algebraic.Product ((:*:) ((:*:))) import Pandora.Paradigm.Primary.Algebraic.Sum ((:+:)) import Pandora.Paradigm.Primary.Algebraic (empty) newtype Comprehension t a = Comprehension (t <:.> Construction t := a) -instance Interpreted (Comprehension t) where+instance Interpreted (->) (Comprehension t) where type Primary (Comprehension t) a = t <:.> Construction t := a run ~(Comprehension x) = x unite = Comprehension instance Covariant (->) (->) (t <:.> Construction t) => Covariant (->) (->) (Comprehension t) where- f -<$>- Comprehension x = Comprehension $ f -<$>- x+ f <$> Comprehension x = Comprehension $ f <$> x instance Traversable (->) (->) (t <:.> Construction t) => Traversable (->) (->) (Comprehension t) where- f <<- Comprehension x = Comprehension -<$>- f <<- x--instance (Covariant (->) (->) t, Semimonoidal (->) (:*:) (:*:) t) => Semimonoidal (->) (:*:) (:*:) (Comprehension t) where- multiply (Comprehension x :*: Comprehension y) = Comprehension $ multiply (x :*: y)+ f <<- Comprehension x = Comprehension <$> f <<- x -instance (Covariant (->) (->) t, Semimonoidal (->) (:*:) (:+:) t) => Semimonoidal (->) (:*:) (:+:) (Comprehension t) where- multiply (Comprehension x :*: Comprehension y) = Comprehension $ multiply (x :*: y)+instance (Covariant (->) (->) t, Semimonoidal (-->) (:*:) right t, Semimonoidal (-->) (:*:) right (t <:.> Construction t)) => Semimonoidal (-->) (:*:) right (Comprehension t) where+ mult = Straight $ Comprehension . (mult @(-->) @(:*:) @right !) . (run @(->) <-> run @(->)) -instance (Covariant (->) (->) t, Monoidal (->) (->) (:*:) (:+:) t) => Monoidal (->) (->) (:*:) (:+:) (Comprehension t) where- unit _ _ = Comprehension empty+instance (Covariant (->) (->) t, Monoidal (-->) (->) (:*:) (:+:) t) => Monoidal (-->) (->) (:*:) (:+:) (Comprehension t) where+ unit _ = Straight $ \_ -> Comprehension empty instance (forall a . Semigroup (t <:.> Construction t := a), Bindable (->) t) => Bindable (->) (Comprehension t) where f =<< Comprehension (TU t) = Comprehension . TU $ (\(Construct x xs) -> run . run $ f x + (f =<< Comprehension (TU xs))) =<< t@@ -61,9 +62,9 @@ instance Monoid (t <:.> Construction t := a) => Monoid (Comprehension t a) where zero = Comprehension zero -instance (Covariant (->) (->) t, Monoidal (->) (->) (:*:) (:*:) t) => Morphable Push (Comprehension t) where+instance (Covariant (->) (->) t, Monoidal (-->) (->) (:*:) (:*:) t) => Morphable Push (Comprehension t) where type Morphing Push (Comprehension t) = Identity <:.:> Comprehension t := (->) morphing (run . premorph -> xs) = T_U $ \(Identity x) -> Comprehension . lift . Construct x . run $ xs instance Nullable (t <:.> Construction t) => Nullable (Comprehension t) where- null = run ->$<- null+ null = run @(->) >$< null
Pandora/Paradigm/Structure/Modification/Prefixed.hs view
@@ -5,30 +5,30 @@ import Pandora.Core.Functor (type (:.), type (:=)) import Pandora.Pattern.Semigroupoid ((.))-import Pandora.Pattern.Category (($))-import Pandora.Pattern.Functor.Covariant (Covariant ((-<$>-)), (-<$$>-))+import Pandora.Pattern.Functor.Covariant (Covariant ((<$>)), (<$$>)) import Pandora.Pattern.Functor.Traversable (Traversable ((<<-)), (-<<-<<-)) import Pandora.Paradigm.Primary.Algebraic (extract) import Pandora.Paradigm.Primary.Algebraic.Product ((:*:))-import Pandora.Paradigm.Controlflow.Effect.Interpreted (Interpreted (Primary, run, unite))+import Pandora.Paradigm.Controlflow.Effect.Interpreted (Interpreted (Primary, run, unite, (||=))) import Pandora.Paradigm.Structure.Ability.Morphable (Morphable (Morphing, morphing), Morph (Into), premorph) import Pandora.Paradigm.Structure.Ability.Nonempty (Nonempty) newtype Prefixed t k a = Prefixed (t :. (:*:) k := a) -instance Interpreted (Prefixed t k) where+instance Interpreted (->) (Prefixed t k) where type Primary (Prefixed t k) a = t :. (:*:) k := a run ~(Prefixed x) = x unite = Prefixed +-- TODO: Try to generalize (->) here instance Covariant (->) (->) t => Covariant (->) (->) (Prefixed t k) where- f -<$>- Prefixed x = Prefixed $ f -<$$>- x+ (<$>) f = (||=) ((<$$>) @(->) @(->) f) instance Traversable (->) (->) t => Traversable (->) (->) (Prefixed t k) where- f <<- Prefixed x = Prefixed -<$>- f -<<-<<- x+ f <<- Prefixed x = Prefixed <$> f -<<-<<- x instance Covariant (->) (->) t => Morphable (Into t) (Prefixed t k) where type Morphing (Into t) (Prefixed t k) = t- morphing (run . premorph -> prefixed) = extract -<$>- prefixed+ morphing (run . premorph -> prefixed) = extract <$> prefixed type instance Nonempty (Prefixed t k) = Prefixed (Nonempty t) k
Pandora/Paradigm/Structure/Some/Binary.hs view
@@ -2,37 +2,34 @@ module Pandora.Paradigm.Structure.Some.Binary where -import Pandora.Core.Functor (type (:.), type (:=), type (:=>), type (:::))+import Pandora.Core.Functor (type (:=), type (:=>), type (:::)) import Pandora.Pattern.Semigroupoid ((.)) import Pandora.Pattern.Category (($), (#))-import Pandora.Pattern.Functor.Covariant (Covariant ((-<$>-)))+import Pandora.Pattern.Functor.Covariant (Covariant ((<$>)))+import Pandora.Pattern.Functor.Traversable (Traversable ((<<-))) import Pandora.Pattern.Functor.Bindable ((=<<)) import Pandora.Pattern.Transformer.Liftable (lift) import Pandora.Pattern.Transformer.Lowerable (lower)-import Pandora.Pattern.Object.Semigroup (Semigroup ((+))) import Pandora.Pattern.Object.Chain (Chain ((<=>))) import Pandora.Paradigm.Primary () import Pandora.Paradigm.Primary.Algebraic.Product ((:*:) ((:*:)), type (:*:), attached, twosome) import Pandora.Paradigm.Primary.Algebraic.Exponential ((%), (&))-import Pandora.Paradigm.Primary.Algebraic (($$$>-), extract)+import Pandora.Paradigm.Primary.Algebraic (($$$>-), (<-*-), extract) import Pandora.Paradigm.Primary.Object.Boolean (Boolean (True, False)) import Pandora.Paradigm.Primary.Object.Ordering (order)-import Pandora.Paradigm.Primary.Object.Numerator (Numerator (Numerator, Zero))-import Pandora.Paradigm.Primary.Object.Denumerator (Denumerator (Single)) import Pandora.Paradigm.Primary.Functor (Comparison) import Pandora.Paradigm.Primary.Functor.Convergence (Convergence (Convergence)) import Pandora.Paradigm.Primary.Functor.Identity (Identity (Identity)) import Pandora.Paradigm.Primary.Functor.Maybe (Maybe (Just, Nothing)) import Pandora.Paradigm.Primary.Functor.Predicate (Predicate (Predicate)) import Pandora.Paradigm.Primary.Functor.Wye (Wye (End, Left, Right, Both))-import Pandora.Paradigm.Primary.Transformer.Construction (Construction (Construct), deconstruct)+import Pandora.Paradigm.Primary.Transformer.Construction (Construction (Construct)) import Pandora.Paradigm.Schemes (TU (TU), T_U (T_U), P_Q_T (P_Q_T), type (<:.>), type (<:.:>)) import Pandora.Paradigm.Controlflow.Effect.Interpreted (run, (=||)) import Pandora.Paradigm.Inventory.Store (Store (Store)) import Pandora.Paradigm.Inventory.Optics (over, view) import Pandora.Paradigm.Structure.Ability.Nonempty (Nonempty) import Pandora.Paradigm.Structure.Ability.Nullable (Nullable (null))-import Pandora.Paradigm.Structure.Ability.Measurable (Measurable (Measural, measurement), Scale (Heighth), measure) import Pandora.Paradigm.Structure.Ability.Monotonic (Monotonic (resolve)) import Pandora.Paradigm.Structure.Ability.Morphable (Morphable (Morphing, morphing), morph, premorph , Morph (Rotate, Into, Insert, Lookup, Vary, Key, Element), Vertical (Up, Down), lookup, vary)@@ -42,26 +39,28 @@ type Binary = Maybe <:.> Construction Wye -rebalance :: Chain a => (Wye :. Construction Wye := a) -> Nonempty Binary a-rebalance (Both x y) = extract x <=> extract y & order- # Construct (extract x) (Both # rebalance (deconstruct x) # rebalance (deconstruct y))- # Construct (extract y) (Both # x # rebalance (deconstruct y))- # Construct (extract x) (Both # rebalance (deconstruct x) # y)+instance {-# OVERLAPS #-} Traversable (->) (->) (Construction Wye) where+ f <<- (Construct x (Left l)) = Construct <$> f x <-*- (Left <$> f <<- l)+ f <<- (Construct x (Right r)) = Construct <$> f x <-*- (Right <$> f <<- r)+ f <<- (Construct x (Both l r)) = Construct <$> f x <-*- (Both <$> f <<- l <-*- f <<- r)+ f <<- (Construct x End) = Construct % End <$> f x +--rebalance :: Chain a => (Wye :. Construction Wye := a) -> Nonempty Binary a+--rebalance (Both x y) = extract x <=> extract y & order+-- # Construct (extract x) (Both # rebalance (deconstruct x) # rebalance (deconstruct y))+-- # Construct (extract y) (Both # x # rebalance (deconstruct y))+-- # Construct (extract x) (Both # rebalance (deconstruct x) # y)+ instance Morphable Insert Binary where type Morphing Insert Binary = (Identity <:.:> Comparison := (:*:)) <:.:> Binary := (->)- morphing (run . premorph -> Nothing) = T_U $ \(T_U (Identity x :*: _)) -> lift $ leaf x- morphing (run . premorph -> Just ne) = T_U $ \(T_U (Identity x :*: Convergence f)) ->- let continue xs = run # morph @Insert @(Nonempty Binary) xs $ twosome # Identity x # Convergence f in- let change = Just . resolve continue (leaf x) in- lift $ f x # extract ne & order # ne- # over (sub @Left) change ne- # over (sub @Right) change ne--instance Measurable Heighth Binary where- type Measural Heighth Binary a = Numerator- measurement (run . extract -> Just bt) = Numerator $ measure @Heighth bt- measurement (run . extract -> Nothing) = Zero+ morphing binary = case run # premorph binary of+ Nothing -> T_U $ \(T_U (Identity x :*: _)) -> lift $ leaf x+ Just non_empty_binary -> T_U $ \(T_U (Identity x :*: Convergence f)) ->+ let continue xs = run # morph @Insert @(Nonempty Binary) xs $ twosome # Identity x # Convergence f in+ let change = Just . resolve continue (leaf x) in+ lift $ f x # extract non_empty_binary & order # non_empty_binary+ # over (sub @Left) change non_empty_binary+ # over (sub @Right) change non_empty_binary instance Nullable Binary where null = Predicate $ \case { TU Nothing -> True ; _ -> False }@@ -71,14 +70,14 @@ type Substance Left Binary = Construction Wye substructure = P_Q_T $ \bintree -> case run . lower # bintree of Nothing -> Store $ Nothing :*: lift . TU- Just tree -> lift . lift @(->) -<$>- run (sub @Left) tree+ Just tree -> lift . lift @(->) <$> run (sub @Left) tree instance Substructure Right Binary where type Available Right Binary = Maybe type Substance Right Binary = Construction Wye substructure = P_Q_T $ \bintree -> case run . extract . run # bintree of Nothing -> Store $ Nothing :*: lift . TU- Just tree -> lift . lift @(->) -<$>- run (sub @Right) tree+ Just tree -> lift . lift @(->) <$> run (sub @Right) tree -------------------------------------- Non-empty binary tree --------------------------------------- @@ -98,15 +97,6 @@ # over (sub @Right) change nonempty_list # f x (extract nonempty_list) -instance Measurable Heighth (Construction Wye) where- type Measural Heighth (Construction Wye) a = Denumerator- measurement (deconstruct . extract -> End) = Single- measurement (deconstruct . extract -> Left lst) = Single + measure @Heighth lst- measurement (deconstruct . extract -> Right rst) = Single + measure @Heighth rst- measurement (deconstruct . extract -> Both lst rst) = Single +- let (lm :*: rm) = measure @Heighth lst :*: measure @Heighth rst- in lm <=> rm & order lm rm lm- instance Substructure Root (Construction Wye) where type Available Root (Construction Wye) = Identity type Substance Root (Construction Wye) = Identity@@ -165,9 +155,9 @@ data Biforked a = Top | Leftward a | Rightward a instance Covariant (->) (->) Biforked where- _ -<$>- Top = Top- f -<$>- Leftward l = Leftward $ f l- f -<$>- Rightward r = Rightward $ f r+ _ <$> Top = Top+ f <$> Leftward l = Leftward $ f l+ f <$> Rightward r = Rightward $ f r type Bifurcation = Biforked <:.> Construction Biforked
Pandora/Paradigm/Structure/Some/List.hs view
@@ -6,7 +6,7 @@ import Pandora.Core.Impliable (imply) import Pandora.Pattern.Semigroupoid ((.)) import Pandora.Pattern.Category (($), (#), identity)-import Pandora.Pattern.Functor.Covariant (Covariant, Covariant ((-<$>-)))+import Pandora.Pattern.Functor.Covariant (Covariant, Covariant ((<$>))) import Pandora.Pattern.Functor.Traversable (Traversable ((<<-))) import Pandora.Pattern.Functor.Extendable (Extendable ((<<=))) import Pandora.Pattern.Functor.Bindable (Bindable ((=<<)))@@ -20,7 +20,7 @@ import Pandora.Paradigm.Primary.Object.Boolean (Boolean (True, False), (?)) import Pandora.Paradigm.Primary.Object.Numerator (Numerator (Numerator)) import Pandora.Paradigm.Primary.Object.Denumerator (Denumerator (Single))-import Pandora.Paradigm.Primary.Algebraic ((-<*>-), (-.#..-), extract)+import Pandora.Paradigm.Primary.Algebraic ((<-*-), (-.#..-), extract) import Pandora.Paradigm.Primary.Algebraic.Product ((:*:) ((:*:)), attached, twosome) import Pandora.Paradigm.Primary.Algebraic.Exponential ((%)) import Pandora.Paradigm.Primary.Functor.Maybe (Maybe (Just, Nothing))@@ -40,7 +40,6 @@ import Pandora.Paradigm.Structure.Ability.Nonempty (Nonempty) import Pandora.Paradigm.Structure.Ability.Nullable (Nullable (null)) import Pandora.Paradigm.Structure.Ability.Zipper (Zipper)-import Pandora.Paradigm.Structure.Ability.Measurable (Measurable (Measural, measurement), Scale (Length), measure) import Pandora.Paradigm.Structure.Ability.Monotonic (resolve) import Pandora.Paradigm.Structure.Ability.Morphable (Morphable (Morphing, morphing) , Morph (Rotate, Into, Push, Pop, Delete, Find, Lookup, Element, Key)@@ -93,11 +92,6 @@ instance Stack List where -instance Measurable Length List where- type Measural Length List a = Numerator- measurement (run . extract -> Nothing) = zero- measurement (run . extract -> Just xs) = Numerator $ measure @Length xs- instance Nullable List where null = Predicate $ \case { TU Nothing -> True ; _ -> False } @@ -112,12 +106,12 @@ type Available Tail List = Identity type Substance Tail List = List substructure = P_Q_T $ \x -> case run . extract . run $ x of- Just ns -> lift . lift @(->) -<$>- run (sub @Tail) ns+ Just ns -> lift . lift @(->) <$> run (sub @Tail) ns Nothing -> Store $ Identity zero :*: lift . identity . extract -- | Transform any traversable structure into a stack linearize :: forall t a . Traversable (->) (->) t => t a -> List a-linearize = TU . extract . (run @(State (Maybe :. Nonempty List := a)) % Nothing) . fold (Just -.#..- Construct)+linearize = TU . extract . (run @(->) @(State (Maybe :. Nonempty List := a)) % Nothing) . fold (Just -.#..- Construct) ----------------------------------------- Non-empty list ------------------------------------------- @@ -140,11 +134,6 @@ type Morphing Push (Construction Maybe) = Identity <:.:> Construction Maybe := (->) morphing (premorph -> xs) = T_U $ \(Identity x) -> Construct x $ Just xs -instance Measurable Length (Construction Maybe) where- type Measural Length (Construction Maybe) a = Denumerator- measurement (deconstruct . extract -> Nothing) = Single- measurement (deconstruct . extract -> Just xs) = Single + measure @Length xs- instance Substructure Root (Construction Maybe) where type Available Root (Construction Maybe) = Identity type Substance Root (Construction Maybe) = Identity@@ -167,37 +156,37 @@ instance {-# OVERLAPS #-} Traversable (->) (->) (Tap (List <:.:> List := (:*:))) where f <<- Tap x (T_U (future :*: past)) = (\past' x' future' -> Tap x' $ twosome # future' # run past')- -<$>- f <<- Reverse past -<*>- f x -<*>- f <<- future+ <$> f <<- Reverse past <-*- f x <-*- f <<- future instance {-# OVERLAPS #-} Extendable (->) (Tap (List <:.:> List := (:*:))) where f <<= z = let move rtt = TU . deconstruct $ run . rtt .-+ z in- Tap # f z $ twosome # f -<$>- move (rotate @Left) # f -<$>- move (rotate @Right)+ Tap # f z $ twosome # f <$> move (rotate @Left) # f <$> move (rotate @Right) instance Morphable (Rotate Left) (Tap (List <:.:> List := (:*:))) where type Morphing (Rotate Left) (Tap (List <:.:> List := (:*:))) = Maybe <:.> Tap (List <:.:> List := (:*:)) morphing (premorph -> Tap x (T_U (future :*: past))) = let subtree = twosome # extract (view (sub @Tail) future) # item @Push x past in- TU $ (Tap . extract) % subtree -<$>- view (sub @Root) future+ TU $ (Tap . extract) % subtree <$> view (sub @Root) future instance Morphable (Rotate Right) (Tap (List <:.:> List := (:*:))) where type Morphing (Rotate Right) (Tap (List <:.:> List := (:*:))) = Maybe <:.> Tap (List <:.:> List := (:*:)) morphing (premorph -> Tap x (T_U (future :*: past))) = let subtree = twosome # item @Push x future # extract (view (sub @Tail) past) in- TU $ (Tap . extract) % subtree -<$>- view (sub @Root) past+ TU $ (Tap . extract) % subtree <$> view (sub @Root) past instance Morphable (Into (Tap (List <:.:> List := (:*:)))) List where type Morphing (Into (Tap (List <:.:> List := (:*:)))) List = Maybe <:.> Tap (List <:.:> List := (:*:))- morphing (premorph -> list) = (into @(Zipper List (Left ::: Right)) -<$>-) ||= list+ morphing (premorph -> list) = (into @(Zipper List (Left ::: Right)) <$>) ||= list instance Morphable (Into List) (Tap (List <:.:> List := (:*:))) where type Morphing (Into List) (Tap (List <:.:> List := (:*:))) = List- morphing (premorph -> Tap x (T_U (future :*: past))) = attached $ run @(State _)+ morphing (premorph -> Tap x (T_U (future :*: past))) = attached $ run @(->) @(State _) # modify . item @Push @List <<- past # item @Push x future instance Morphable (Into (Comprehension Maybe)) (Tap (List <:.:> List := (:*:))) where type Morphing (Into (Comprehension Maybe)) (Tap (List <:.:> List := (:*:))) = Comprehension Maybe- morphing (premorph -> Tap x (T_U (future :*: past))) = attached $ run @(State _)+ morphing (premorph -> Tap x (T_U (future :*: past))) = attached $ run @(->) @(State _) # modify . item @Push @(Comprehension Maybe) <<- past # item @Push x (Comprehension future) @@ -208,12 +197,12 @@ instance Morphable (Rotate Left) (Tap (Construction Maybe <:.:> Construction Maybe := (:*:))) where type Morphing (Rotate Left) (Tap (Construction Maybe <:.:> Construction Maybe := (:*:))) = Maybe <:.> Tap (Construction Maybe <:.:> Construction Maybe := (:*:))- morphing (premorph -> Tap x (T_U (future :*: past))) = TU $ Tap (extract future) . twosome % item @Push x past -<$>- deconstruct future+ morphing (premorph -> Tap x (T_U (future :*: past))) = TU $ Tap (extract future) . twosome % item @Push x past <$> deconstruct future instance Morphable (Rotate Right) (Tap (Construction Maybe <:.:> Construction Maybe := (:*:))) where type Morphing (Rotate Right) (Tap (Construction Maybe <:.:> Construction Maybe := (:*:))) = Maybe <:.> Tap (Construction Maybe <:.:> Construction Maybe := (:*:))- morphing (premorph -> Tap x (T_U (future :*: past))) = TU $ Tap (extract past) . twosome (item @Push x future) -<$>- deconstruct past+ morphing (premorph -> Tap x (T_U (future :*: past))) = TU $ Tap (extract past) . twosome (item @Push x future) <$> deconstruct past instance Morphable (Into (Tap (List <:.:> List := (:*:)))) (Construction Maybe) where type Morphing (Into (Tap (List <:.:> List := (:*:)))) (Construction Maybe) = Tap (List <:.:> List := (:*:))@@ -226,18 +215,18 @@ instance Morphable (Into (Tap (Construction Maybe <:.:> Construction Maybe := (:*:)))) (Tap (List <:.:> List := (:*:))) where type Morphing (Into (Tap (Construction Maybe <:.:> Construction Maybe := (:*:)))) (Tap (List <:.:> List := (:*:))) = Maybe <:.> Tap (Construction Maybe <:.:> Construction Maybe := (:*:))- morphing (premorph -> zipper) = let spread x y = (:*:) -<$>- x -<*>- y in TU $- Tap (extract zipper) . T_U -<$>- ((spread |-) . (run <-> run) . run $ lower zipper)+ morphing (premorph -> zipper) = let spread x y = (:*:) <$> x <-*- y in TU $+ Tap (extract zipper) . T_U <$> ((spread |-) . (run @(->) <-> run @(->)) . run $ lower zipper) instance Morphable (Into (Construction Maybe)) (Tap (Construction Maybe <:.:> Construction Maybe := (:*:))) where type Morphing (Into (Construction Maybe)) (Tap (Construction Maybe <:.:> Construction Maybe := (:*:))) = Construction Maybe- morphing (premorph -> Tap x (T_U (future :*: past))) = attached $ run @(State _)+ morphing (premorph -> Tap x (T_U (future :*: past))) = attached $ run @(->) @(State _) # modify . item @Push @(Nonempty List) <<- past # item @Push x future instance Morphable (Into List) (Tap (Construction Maybe <:.:> Construction Maybe := (:*:))) where type Morphing (Into List) (Tap (Construction Maybe <:.:> Construction Maybe := (:*:))) = List- morphing (premorph -> Tap x (T_U (future :*: past))) = attached $ run @(State _)+ morphing (premorph -> Tap x (T_U (future :*: past))) = attached $ run @(->) @(State _) # modify . item @Push @List <<- past # item @Push x (lift future) @@ -249,11 +238,11 @@ instance Setoid key => Morphable (Lookup Key) (Prefixed List key) where type Morphing (Lookup Key) (Prefixed List key) = (->) key <:.> Maybe- morphing (run . premorph -> list) = TU $ \key -> lookup @Key key =<< Prefixed -<$>- run list + morphing (run . premorph -> list) = TU $ \key -> lookup @Key key =<< Prefixed <$> run list ------------------------------------ Prefixed non-empty list --------------------------------------- instance Setoid key => Morphable (Lookup Key) (Prefixed (Construction Maybe) key) where type Morphing (Lookup Key) (Prefixed (Construction Maybe) key) = (->) key <:.> Maybe- morphing (run . premorph -> Construct x xs) = TU $ \key -> extract -<$>- search key where+ morphing (run . premorph -> Construct x xs) = TU $ \key -> extract <$> search key where search key = key == attached x ? Just x $ find @Element # Predicate ((key ==) . attached) =<< xs
Pandora/Paradigm/Structure/Some/Rose.hs view
@@ -5,7 +5,7 @@ import Pandora.Core.Functor (type (:.), type (:=)) import Pandora.Pattern.Semigroupoid ((.)) import Pandora.Pattern.Category (($), (#))-import Pandora.Pattern.Functor.Contravariant ((->$<-))+import Pandora.Pattern.Functor.Contravariant ((>$<)) import Pandora.Pattern.Functor.Bindable (Bindable ((=<<))) import Pandora.Pattern.Transformer.Liftable (lift) import Pandora.Pattern.Transformer.Lowerable (lower)@@ -102,4 +102,4 @@ find_rose_sub_tree (Construct k (Just ks)) tree = k != attached (extract tree) ? Nothing $ find_rose_sub_tree ks =<< subtree where subtree :: Maybe :. Nonempty Rose := k :*: a- subtree = find @Element # attached . extract ->$<- equate (extract ks) # deconstruct tree+ subtree = find @Element # attached . extract >$< equate (extract ks) # deconstruct tree
Pandora/Paradigm/Structure/Some/Splay.hs view
@@ -6,10 +6,10 @@ import Pandora.Core.Functor (type (~>), type (:.), type (:=)) import Pandora.Pattern.Semigroupoid ((.)) import Pandora.Pattern.Category (($), (#))-import Pandora.Pattern.Functor.Covariant (Covariant ((-<$>-)))+import Pandora.Pattern.Functor.Covariant (Covariant ((<$>))) import Pandora.Pattern.Functor.Bindable (Bindable ((=<<))) import Pandora.Paradigm.Primary ()-import Pandora.Paradigm.Primary.Algebraic ((-<*>-), extract)+import Pandora.Paradigm.Primary.Algebraic ((<-*-), extract) import Pandora.Paradigm.Primary.Algebraic.Product (twosome) import Pandora.Paradigm.Primary.Functor.Maybe (Maybe (Just)) import Pandora.Paradigm.Primary.Functor.Tagged (type (:#))@@ -54,27 +54,27 @@ instance Morphable (Rotate (Left Zig)) (Construction Wye) where type Morphing (Rotate (Left Zig)) (Construction Wye) = Binary morphing :: forall a . (:#) (Rotate (Left Zig)) <:.> Construction Wye := a -> Binary a- morphing (premorph -> Construct x xs) = TU $ Construct -<$>- parent -<*>- Just nodes where+ morphing (premorph -> Construct x xs) = TU $ Construct <$> parent <-*- Just nodes where nodes :: Wye :. Nonempty Binary := a nodes = into @Wye . twosome (branch @Left xs) . Just . Construct x- . into @Wye $ twosome (branch @Left =<< deconstruct -<$>- branch @Right xs)- (branch @Right =<< deconstruct -<$>- branch @Right xs)+ . into @Wye $ twosome (branch @Left =<< deconstruct <$> branch @Right xs)+ (branch @Right =<< deconstruct <$> branch @Right xs) parent :: Maybe a- parent = extract -<$>- branch @Right xs+ parent = extract <$> branch @Right xs instance Morphable (Rotate (Right Zig)) (Construction Wye) where type Morphing (Rotate (Right Zig)) (Construction Wye) = Binary morphing :: forall a . (:#) (Rotate (Right Zig)) <:.> Construction Wye := a -> Binary a- morphing (premorph -> Construct x xs) = TU $ Construct -<$>- parent -<*>- Just nodes where+ morphing (premorph -> Construct x xs) = TU $ Construct <$> parent <-*- Just nodes where nodes :: Wye :. Nonempty Binary := a- nodes = into @Wye . twosome (branch @Left =<< deconstruct -<$>- branch @Left xs) . Just . Construct x- . into @Wye $ twosome (branch @Right =<< deconstruct -<$>- branch @Left xs) # branch @Right xs+ nodes = into @Wye . twosome (branch @Left =<< deconstruct <$> branch @Left xs) . Just . Construct x+ . into @Wye $ twosome (branch @Right =<< deconstruct <$> branch @Left xs) # branch @Right xs parent :: Maybe a- parent = extract -<$>- branch @Left xs+ parent = extract <$> branch @Left xs -- TODO: Morphing ... = Conclussion Error <:.> Nonempty Binary instance Morphable (Rotate (Left (Zig Zig))) (Construction Wye) where
Pandora/Paradigm/Structure/Some/Stream.hs view
@@ -5,7 +5,7 @@ import Pandora.Core.Functor (type (:=), type (:=>), type (:::)) import Pandora.Pattern.Semigroupoid ((.)) import Pandora.Pattern.Category (($), (#))-import Pandora.Pattern.Functor.Covariant (Covariant ((-<$>-)))+import Pandora.Pattern.Functor.Covariant (Covariant ((<$>))) import Pandora.Pattern.Functor.Extendable (Extendable ((<<=))) import Pandora.Paradigm.Primary.Algebraic.Product ((:*:) ((:*:)), twosome) import Pandora.Paradigm.Primary.Algebraic (extract)@@ -34,7 +34,7 @@ instance {-# OVERLAPS #-} Extendable (->) (Tap (Stream <:.:> Stream := (:*:))) where f <<= z = let move rtt = extract . deconstruct $ point . rtt .-+ z- in f -<$>- Tap z (twosome # (move $ rotate @Left) # (move $ rotate @Right))+ in f <$> Tap z (twosome # (move $ rotate @Left) # (move $ rotate @Right)) repeat :: a :=> Stream repeat x = Construct x . Identity $ repeat x
Pandora/Pattern.hs view
@@ -3,5 +3,7 @@ import Pandora.Pattern.Object as Exports import Pandora.Pattern.Transformer as Exports import Pandora.Pattern.Functor as Exports+import Pandora.Pattern.Morphism as Exports+import Pandora.Pattern.Groupoid as Exports import Pandora.Pattern.Category as Exports import Pandora.Pattern.Semigroupoid as Exports
Pandora/Pattern/Category.hs view
@@ -1,6 +1,6 @@ module Pandora.Pattern.Category (Category (..)) where -import Pandora.Pattern.Semigroupoid (Semigroupoid ((.))) +import Pandora.Pattern.Semigroupoid (Semigroupoid ((.))) infixl 2 # infixr 0 $
Pandora/Pattern/Functor/Bivariant.hs view
@@ -1,7 +1,7 @@ module Pandora.Pattern.Functor.Bivariant where import Pandora.Pattern.Functor.Covariant (Covariant)-import Pandora.Paradigm.Primary.Transformer.Flip (Flip)+import Pandora.Pattern.Morphism.Flip (Flip) infixl 4 <-> @@ -13,4 +13,4 @@ class (forall i . Covariant left target (v i), forall i . Covariant right target (Flip v i)) => Bivariant left right target v where- (<->) :: left a b -> right c d -> target (v a c) (v b d) + (<->) :: left a b -> right c d -> target (v a c) (v b d)
Pandora/Pattern/Functor/Comonad.hs view
@@ -15,4 +15,4 @@ > * Associativity: extend f . extend g ≡ extend (f . extend g) -} -class (Monoidal (<--) source (:*:) (:*:) t, Extendable source t) => Comonad t source+class (Monoidal (<--) source (:*:) (:*:) t, Extendable source t) => Comonad source t
Pandora/Pattern/Functor/Contravariant.hs view
@@ -2,13 +2,13 @@ import Pandora.Pattern.Category (Category) -infixl 4 ->$<-+infixl 4 >$< {- | > When providing a new instance, you should ensure it satisfies:-> * Identity morphism: (identity ->$<-) ≡ identity-> * Interpreted of morphisms: (f ->$<-) . (g ->$<-) ≡ (g . f ->$<-)+> * Identity morphism: (identity >$<) ≡ identity+> * Interpreted of morphisms: (f >$<) . (g >$<) ≡ (g . f >$<) -} class (Category source, Category target) => Contravariant source target t where- (->$<-) :: source a b -> target (t b) (t a)+ (>$<) :: source a b -> target (t b) (t a)
Pandora/Pattern/Functor/Covariant.hs view
@@ -1,43 +1,33 @@+{-# LANGUAGE AllowAmbiguousTypes #-}+ module Pandora.Pattern.Functor.Covariant where import Pandora.Pattern.Semigroupoid (Semigroupoid) -infixl 4 -<$>--infixl 3 -<<$$>-, -<$$>>-+infixl 4 <$>+infixl 3 <$$>+infixl 4 <$$$> {- | > When providing a new instance, you should ensure it satisfies:-> * Identity morphism: (identity -<$>-) ≡ identity-> * Interpreted of morphisms: (f . g -<$>-) ≡ (f -<$>-) . (g -<$>-)+> * Identity morphism: (identity <$>) ≡ identity+> * Interpreted of morphisms: (f . g <$>) ≡ (f <$>) . (g <$>) -} class (Semigroupoid source, Semigroupoid target) => Covariant source target t where- (-<$>-) :: source a b -> target (t a) (t b)- -(-<$$>-) :: forall t u category a b - . (Covariant category category u, Covariant category category t) - => category a b -> category (t (u a)) (t (u b))-(-<$$>-) s = ((-<$>-) ((-<$>-) @category @category @u s))--(-<<$$>-) :: forall t u source target a b - . (Covariant source source u, Covariant source target t) - => source a b -> target (t (u a)) (t (u b))-(-<<$$>-) s = ((-<$>-) ((-<$>-) @source @source @u s))+ (<$>) :: source a b -> target (t a) (t b) -(-<$$>>-) :: forall source target t u a b - . (Covariant source target u, Covariant target target t) +(<$$>) :: forall source between target t u a b+ . (Covariant source between u, Covariant between target t) => source a b -> target (t (u a)) (t (u b))-(-<$$>>-) s = ((-<$>-) ((-<$>-) @source @target @u s))---- TODO: Figure out how to work with hidden type variables--- to put intermediate category `between`+(<$$>) s = ((<$>) ((<$>) @source @between @u s)) -(-<$$$>-) :: forall t u v category a b- . (Covariant category category t, Covariant category category u, Covariant category category v) - => category a b -> category (t (u (v a))) (t (u (v b)))-(-<$$$>-) s = ((-<$>-) @category @category @t ((-<$>-) @category @category @u ((-<$>-) @category @category @v s)))+(<$$$>) :: forall source between1 between2 target t u v a b+ . (Covariant source between1 v, Covariant between1 between2 u, Covariant between2 target t)+ => source a b -> target (t (u (v a))) (t (u (v b)))+(<$$$>) s = ((<$>) @between2 @target ((<$>) @between1 @between2 @u ((<$>) @source @between1 @v s))) -(-<$$$$>-) :: forall category t u v w a b- . (Covariant category category t, Covariant category category u, Covariant category category v, Covariant category category w) - => category a b -> category (t (u (v (w a)))) (t (u (v (w b))))-(-<$$$$>-) s = ((-<$>-) @category @category @t ((-<$>-) @category @category @u ((-<$>-) @category @category @v ((-<$>-) @category @category @w s))))+(<$$$$>) :: forall source between1 between2 between3 target t u v w a b+ . (Covariant source between1 w, Covariant between1 between2 v, Covariant between2 between3 u, Covariant between3 target t)+ => source a b -> target (t (u (v (w a)))) (t (u (v (w b))))+(<$$$$>) s = ((<$>) @between3 @target @t ((<$>) @between2 @between3 @u ((<$>) @between1 @between2 @v ((<$>) @source @between1 @w s))))
Pandora/Pattern/Functor/Distributive.hs view
@@ -7,7 +7,7 @@ > When providing a new instance, you should ensure it satisfies: > * Identity morphism: (identity -<<) . (identity -<<) ≡ identity-> * Interchange collection: (f -<<) ≡ (identity -<<) . (f -<$>-)+> * Interchange collection: (f -<<) ≡ (identity -<<) . (f <$>) -} infixl 5 -<<
Pandora/Pattern/Functor/Divariant.hs view
@@ -2,7 +2,7 @@ import Pandora.Pattern.Functor.Covariant (Covariant) import Pandora.Pattern.Functor.Contravariant (Contravariant)-import Pandora.Paradigm.Primary.Transformer.Flip (Flip)+import Pandora.Pattern.Morphism.Flip (Flip) infixl 4 >-> @@ -12,6 +12,6 @@ > * Interpreted: f . g >-> h . i ≡ g >-> h . f >-> i -} -class (forall i . Contravariant left target (Flip v i), forall i . Covariant right target (v i)) +class (forall i . Contravariant left target (Flip v i), forall i . Covariant right target (v i)) => Divariant left right target v where (>->) :: left a b -> right c d -> target (v b c) (v a d)
Pandora/Pattern/Functor/Extendable.hs view
@@ -6,8 +6,8 @@ {- | > When providing a new instance, you should ensure it satisfies:-> * Duplication interchange: (f -<$$>-) . (identity <<=) ≡ (identity <<=) . (f -<$>-)-> * Extension interchange: (f <<=) ≡ (f -<$>-) . (identity <<=)+> * Duplication interchange: (f -<$$>-) . (identity <<=) ≡ (identity <<=) . (f <$>)+> * Extension interchange: (f <<=) ≡ (f <$>) . (identity <<=) -} class Covariant source source t => Extendable source t where
Pandora/Pattern/Functor/Monad.hs view
@@ -1,5 +1,6 @@ module Pandora.Pattern.Functor.Monad where +import Pandora.Pattern.Morphism.Straight (Straight) import Pandora.Pattern.Functor.Covariant (Covariant) import Pandora.Pattern.Functor.Bindable (Bindable) import Pandora.Pattern.Functor.Monoidal (Monoidal)@@ -19,7 +20,7 @@ --infixl 1 >>=-, ->>= --infixr 1 -=<<, =<<- -class (Covariant (->) (->) t, Monoidal (->) (->) (:*:) (:*:) t, Bindable (->) t) => Monad t where+class (Covariant category category t, Monoidal (Straight category) category (:*:) (:*:) t, Bindable category t) => Monad category t where --(>>=-) :: t a -> t b -> t a --(>>=-) x y = x >>= \r -> y >>= \_ -> point r --(->>=) :: t a -> t b -> t b
Pandora/Pattern/Functor/Monoidal.hs view
@@ -5,5 +5,5 @@ type family Unit (p :: * -> * -> *) = r | r -> p -class Semimonoidal p source target t => Monoidal p q source target t where+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/Semimonoidal.hs view
@@ -2,5 +2,5 @@ import Pandora.Pattern.Semigroupoid (Semigroupoid) -class Semigroupoid p => Semimonoidal p source target t where- multiply :: p (source (t a) (t b)) (t (target a b))+class Semigroupoid p => Semimonoidal p source target t | p target -> source where+ mult :: p (source (t a) (t b)) (t (target a b))
Pandora/Pattern/Functor/Traversable.hs view
@@ -2,6 +2,7 @@ import Pandora.Pattern.Functor.Covariant (Covariant) import Pandora.Pattern.Functor.Monoidal (Monoidal)+import Pandora.Pattern.Morphism.Straight (Straight) import Pandora.Paradigm.Primary.Algebraic.Product ((:*:)) {- |@@ -10,17 +11,17 @@ > When providing a new instance, you should ensure it satisfies: > * Numeratority of traversing: g . (f <<--) ≡ (g . f <<--)-> * Numeratority of sequencing: f . (identity <<--)= (identity <<--) . (f -<$>-)+> * Numeratority of sequencing: f . (identity <<--)= (identity <<--) . (f <$>) > * Preserving point: p (point x) ≡ point x-> * Preserving apply: f (x -<*>- y) ≡ f x -<*>- f y+> * Preserving apply: f (x <-*- y) ≡ f x <-*- f y -} infixl 5 <<-, -<<-<<- class Covariant source target t => Traversable source target t where- (<<-) :: (Covariant source target u, Monoidal source target (:*:) (:*:) u) => source a (u b) -> target (t a) (u (t b))+ (<<-) :: (Covariant source target u, Monoidal (Straight source) target (:*:) (:*:) u) => source a (u b) -> target (t a) (u (t b)) (-<<-<<-) :: forall t u v category a b .- (Traversable category category t, Covariant category category u, Monoidal category category (:*:) (:*:) u, Traversable category category v) + (Traversable category category t, Covariant category category u, Monoidal (Straight category) category (:*:) (:*:) u, Traversable category category v) => category a (u b) -> category (v (t a)) (u (v (t b))) (-<<-<<-) f = ((<<-) ((<<-) @category @category @t f))
+ Pandora/Pattern/Groupoid.hs view
@@ -0,0 +1,11 @@+module Pandora.Pattern.Groupoid (Groupoid (..)) where++import Pandora.Pattern.Category (Category)++{- |+> When providing a new instance, you should ensure it satisfies:+> * Inversion absence: inversion . inversion ≡ identity+-}++class Category m => Groupoid m where+ inversion :: m a b -> m b a
+ Pandora/Pattern/Morphism.hs view
@@ -0,0 +1,8 @@+module Pandora.Pattern.Morphism (module Exports, Opposite) where++import Pandora.Pattern.Morphism.Flip as Exports+import Pandora.Pattern.Morphism.Straight as Exports++type family Opposite m where+ Opposite Straight = Flip+ Opposite Flip = Straight
+ Pandora/Pattern/Morphism/Flip.hs view
@@ -0,0 +1,27 @@+module Pandora.Pattern.Morphism.Flip where++import Pandora.Pattern.Semigroupoid (Semigroupoid ((.)))+import Pandora.Pattern.Category (Category (identity))+import Pandora.Pattern.Functor.Covariant (Covariant ((<$>)))+import Pandora.Pattern.Functor.Contravariant (Contravariant ((>$<)))+import Pandora.Core.Appliable (Appliable ((!)))++newtype Flip (v :: * -> * -> *) a e = Flip (v e a)++instance Semigroupoid m => Semigroupoid (Flip m) where+ Flip g . Flip f = Flip (f . g)++instance Category m => Category (Flip m) where+ identity = Flip identity++instance (Category m, Covariant m m t) => Contravariant (Flip m) m t where+ (>$<) (Flip f) = (<$>) f++instance (Category m, Covariant m m t) => Contravariant m (Flip m) t where+ (>$<) f = Flip ((<$>) f)++instance (Category m, Covariant m m t) => Covariant (Flip m) (Flip m) t where+ (<$>) (Flip f) = Flip ((<$>) f)++instance Appliable (Flip m) b c m c b where+ (!) (Flip m) = m
+ Pandora/Pattern/Morphism/Straight.hs view
@@ -0,0 +1,26 @@+module Pandora.Pattern.Morphism.Straight where++import Pandora.Pattern.Semigroupoid (Semigroupoid ((.)))+import Pandora.Pattern.Category (Category (identity))+import Pandora.Pattern.Functor.Covariant (Covariant ((<$>)))+import Pandora.Core.Appliable (Appliable ((!)))++newtype Straight (v :: * -> * -> *) a e = Straight (v a e)++instance Semigroupoid m => Semigroupoid (Straight m) where+ Straight g . Straight f = Straight (g . f)++instance Category m => Category (Straight m) where+ identity = Straight identity++instance Covariant m m t => Covariant (Straight m) m t where+ (<$>) (Straight f) = (<$>) f++instance Covariant m m t => Covariant m (Straight m) t where+ (<$>) f = Straight ((<$>) f)++instance Covariant m m t => Covariant (Straight m) (Straight m) t where+ (<$>) (Straight f) = Straight ((<$>) f)++instance Appliable (Straight m) c b m c b where+ (!) (Straight m) = m
Pandora/Pattern/Transformer/Hoistable.hs view
@@ -5,8 +5,8 @@ {- | > When providing a new instance, you should ensure it satisfies one law:-> * Identity morphism: hoist identity ≡ identity-> * Interpreted of morphisms: hoist (f . g) ≡ hoist f . hoist g+> * Identity morphism: (identity /|\) ≡ identity+> * Interpreted of morphisms: (f . g /|\) ≡ (f /|\) . (g /|\) -} infixr 5 /|\@@ -14,6 +14,3 @@ class Hoistable t where {-# MINIMAL (/|\) #-} (/|\) :: (Covariant (->) (->) u) => u ~> v -> t u ~> t v-- hoist :: (Covariant (->) (->) u) => u ~> v -> t u ~> t v- hoist = (/|\)
pandora.cabal view
@@ -1,5 +1,5 @@ name: pandora-version: 0.4.6+version: 0.4.7 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@@ -23,6 +23,7 @@ Pandora.Core Pandora.Core.Functor Pandora.Core.Impliable+ Pandora.Core.Appliable Pandora.Paradigm -- Basic constructions@@ -57,7 +58,8 @@ Pandora.Paradigm.Primary.Transformer Pandora.Paradigm.Primary.Transformer.Backwards Pandora.Paradigm.Primary.Transformer.Reverse- Pandora.Paradigm.Primary.Transformer.Flip+ Pandora.Pattern.Morphism.Flip+ Pandora.Pattern.Morphism.Straight Pandora.Paradigm.Primary.Transformer.Continuation Pandora.Paradigm.Primary.Transformer.Construction Pandora.Paradigm.Primary.Transformer.Instruction@@ -106,7 +108,6 @@ Pandora.Paradigm.Structure.Ability Pandora.Paradigm.Structure.Ability.Morphable Pandora.Paradigm.Structure.Ability.Accessible- Pandora.Paradigm.Structure.Ability.Measurable Pandora.Paradigm.Structure.Ability.Substructure Pandora.Paradigm.Structure.Ability.Nonempty Pandora.Paradigm.Structure.Ability.Nullable@@ -135,6 +136,8 @@ -- Algebra typeclasses Pandora.Pattern.Semigroupoid Pandora.Pattern.Category+ Pandora.Pattern.Groupoid+ Pandora.Pattern.Morphism -- Functor typeclassess Pandora.Pattern.Functor Pandora.Pattern.Functor.Adjoint