packages feed

pandora 0.2.4 → 0.2.5

raw patch · 39 files changed

+284/−145 lines, 39 filesPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

API changes (from Hackage documentation)

- Pandora.Paradigm.Basis.Continuation: instance (forall (u :: * -> *). Pandora.Pattern.Functor.Bindable.Bindable u) => Pandora.Pattern.Functor.Liftable.Liftable (Pandora.Paradigm.Basis.Continuation.Continuation r)
- Pandora.Paradigm.Basis.Free: instance Pandora.Pattern.Functor.Liftable.Liftable Pandora.Paradigm.Basis.Free.Free
- Pandora.Paradigm.Basis.Jack: instance Pandora.Pattern.Functor.Liftable.Liftable Pandora.Paradigm.Basis.Jack.Jack
- Pandora.Paradigm.Basis.Jet: (:-) :: a -> Jet t (t a) -> Jet t a
- Pandora.Paradigm.Basis.Jet: infixr 6 :-
- Pandora.Paradigm.Basis.Kan: [lan] :: Lan -> (t b -> a) -> u b
- Pandora.Paradigm.Basis.Kan: [ran] :: Ran -> (a -> t b) -> u b
- Pandora.Paradigm.Basis.Kan: instance Pandora.Pattern.Functor.Contravariant.Contravariant (Pandora.Paradigm.Basis.Kan.Lan t u b)
- Pandora.Paradigm.Basis.Kan: instance Pandora.Pattern.Functor.Covariant.Covariant (Pandora.Paradigm.Basis.Kan.Ran t u b)
- Pandora.Paradigm.Basis.Product: type family Injective xs ys
- Pandora.Paradigm.Basis.Twister: instance Pandora.Pattern.Functor.Lowerable.Lowerable Pandora.Paradigm.Basis.Twister.Twister
- Pandora.Paradigm.Basis.Yoneda: instance Pandora.Pattern.Functor.Liftable.Liftable Pandora.Paradigm.Basis.Yoneda.Yoneda
- Pandora.Paradigm.Controlflow.Joint.Schemes.TUV: TUV :: ((t :. (u :. v)) := a) -> TUV ct cu cv t u v a
- Pandora.Paradigm.Controlflow.Joint.Schemes.TUV: instance forall k1 k2 k3 k4 k5 (ct :: k5) (cu :: k4) (cv :: k3) (t :: k2 -> *) (u :: k1 -> k2) (v :: * -> k1). Pandora.Paradigm.Controlflow.Joint.Interpreted.Interpreted (Pandora.Paradigm.Controlflow.Joint.Schemes.TUV.TUV ct cu cv t u v)
- Pandora.Paradigm.Controlflow.Joint.Schemes.TUV: newtype TUV ct cu cv t u v a
- Pandora.Paradigm.Controlflow.Joint.Schemes.UTU: instance forall k1 k2 k3 (ct :: k3) (cu :: k2) (t :: (k1 -> *) -> * -> k1) (u :: k1 -> *). Pandora.Paradigm.Controlflow.Joint.Interpreted.Interpreted (Pandora.Paradigm.Controlflow.Joint.Schemes.UTU.UTU ct cu t u)
- Pandora.Paradigm.Inventory.State: instance Pandora.Pattern.Functor.Bindable.Bindable u => Pandora.Pattern.Functor.Applicative.Applicative (Pandora.Paradigm.Controlflow.Joint.Schemes.TUV.TUV Pandora.Pattern.Functor.Covariant.Covariant Pandora.Pattern.Functor.Covariant.Covariant Pandora.Pattern.Functor.Covariant.Covariant ((->) s) u ((Pandora.Paradigm.Basis.Product.:*:) s))
- Pandora.Paradigm.Inventory.State: instance Pandora.Pattern.Functor.Bindable.Bindable u => Pandora.Pattern.Functor.Bindable.Bindable (Pandora.Paradigm.Controlflow.Joint.Schemes.TUV.TUV Pandora.Pattern.Functor.Covariant.Covariant Pandora.Pattern.Functor.Covariant.Covariant Pandora.Pattern.Functor.Covariant.Covariant ((->) s) u ((Pandora.Paradigm.Basis.Product.:*:) s))
- Pandora.Paradigm.Inventory.State: instance Pandora.Pattern.Functor.Covariant.Covariant u => Pandora.Pattern.Functor.Covariant.Covariant (Pandora.Paradigm.Controlflow.Joint.Schemes.TUV.TUV Pandora.Pattern.Functor.Covariant.Covariant Pandora.Pattern.Functor.Covariant.Covariant Pandora.Pattern.Functor.Covariant.Covariant ((->) s) u ((Pandora.Paradigm.Basis.Product.:*:) s))
- Pandora.Paradigm.Inventory.State: instance Pandora.Pattern.Functor.Monad.Monad u => Pandora.Pattern.Functor.Monad.Monad (Pandora.Paradigm.Controlflow.Joint.Schemes.TUV.TUV Pandora.Pattern.Functor.Covariant.Covariant Pandora.Pattern.Functor.Covariant.Covariant Pandora.Pattern.Functor.Covariant.Covariant ((->) s) u ((Pandora.Paradigm.Basis.Product.:*:) s))
- Pandora.Paradigm.Inventory.State: instance Pandora.Pattern.Functor.Pointable.Pointable u => Pandora.Pattern.Functor.Pointable.Pointable (Pandora.Paradigm.Controlflow.Joint.Schemes.TUV.TUV Pandora.Pattern.Functor.Covariant.Covariant Pandora.Pattern.Functor.Covariant.Covariant Pandora.Pattern.Functor.Covariant.Covariant ((->) s) u ((Pandora.Paradigm.Basis.Product.:*:) s))
- Pandora.Paradigm.Inventory.Store: instance Pandora.Pattern.Functor.Covariant.Covariant u => Pandora.Pattern.Functor.Covariant.Covariant (Pandora.Paradigm.Controlflow.Joint.Schemes.TUV.TUV Pandora.Pattern.Functor.Covariant.Covariant Pandora.Pattern.Functor.Covariant.Covariant Pandora.Pattern.Functor.Covariant.Covariant ((Pandora.Paradigm.Basis.Product.:*:) p) u ((->) p))
- Pandora.Paradigm.Inventory.Store: instance Pandora.Pattern.Functor.Extendable.Extendable u => Pandora.Pattern.Functor.Extendable.Extendable (Pandora.Paradigm.Controlflow.Joint.Schemes.TUV.TUV Pandora.Pattern.Functor.Covariant.Covariant Pandora.Pattern.Functor.Covariant.Covariant Pandora.Pattern.Functor.Covariant.Covariant ((Pandora.Paradigm.Basis.Product.:*:) p) u ((->) p))
- Pandora.Paradigm.Inventory.Store: instance Pandora.Pattern.Functor.Extractable.Extractable u => Pandora.Pattern.Functor.Extractable.Extractable (Pandora.Paradigm.Controlflow.Joint.Schemes.TUV.TUV Pandora.Pattern.Functor.Covariant.Covariant Pandora.Pattern.Functor.Covariant.Covariant Pandora.Pattern.Functor.Covariant.Covariant ((Pandora.Paradigm.Basis.Product.:*:) p) u ((->) p))
- Pandora.Pattern.Functor.Liftable: class Liftable t
- Pandora.Pattern.Functor.Liftable: lift :: (Liftable t, Covariant u) => u ~> t u
- Pandora.Pattern.Functor.Lowerable: class Lowerable t
- Pandora.Pattern.Functor.Lowerable: lower :: (Lowerable t, Covariant u) => t u ~> u
- Pandora.Pattern.Object.Group: inverse :: Group a => a -> a
- Pandora.Pattern.Object.Setoid: (&&) :: Boolean -> Boolean -> Boolean
- Pandora.Pattern.Object.Setoid: (||) :: Boolean -> Boolean -> Boolean
- Pandora.Pattern.Object.Setoid: infixr 3 &&
- Pandora.Pattern.Object.Setoid: infixr 9 ||
- Pandora.Pattern.Object.Setoid: not :: Boolean -> Boolean
+ Pandora.Paradigm.Basis.Constant: instance forall k a (b :: k). Pandora.Pattern.Object.Quasiring.Quasiring a => Pandora.Pattern.Object.Quasiring.Quasiring (Pandora.Paradigm.Basis.Constant.Constant a b)
+ Pandora.Paradigm.Basis.Continuation: instance (forall (u :: * -> *). Pandora.Pattern.Functor.Bindable.Bindable u) => Pandora.Pattern.Transformer.Liftable.Liftable (Pandora.Paradigm.Basis.Continuation.Continuation r)
+ Pandora.Paradigm.Basis.Free: instance Pandora.Pattern.Transformer.Liftable.Liftable Pandora.Paradigm.Basis.Free.Free
+ Pandora.Paradigm.Basis.Identity: instance Pandora.Pattern.Object.Quasiring.Quasiring a => Pandora.Pattern.Object.Quasiring.Quasiring (Pandora.Paradigm.Basis.Identity.Identity a)
+ Pandora.Paradigm.Basis.Jack: instance Pandora.Pattern.Transformer.Liftable.Liftable Pandora.Paradigm.Basis.Jack.Jack
+ Pandora.Paradigm.Basis.Jet: Jet :: a -> Jet t (t a) -> Jet t a
+ Pandora.Paradigm.Basis.Kan: instance forall k (t :: k -> *) (u :: k -> *) (b :: k). Pandora.Paradigm.Controlflow.Joint.Interpreted.Interpreted (Pandora.Paradigm.Basis.Kan.Lan t u b)
+ Pandora.Paradigm.Basis.Kan: instance forall k (t :: k -> *) (u :: k -> *) (b :: k). Pandora.Paradigm.Controlflow.Joint.Interpreted.Interpreted (Pandora.Paradigm.Basis.Kan.Ran t u b)
+ Pandora.Paradigm.Basis.Kan: instance forall k (t :: k -> *) (u :: k -> *) (b :: k). Pandora.Pattern.Functor.Contravariant.Contravariant (Pandora.Paradigm.Basis.Kan.Lan t u b)
+ Pandora.Paradigm.Basis.Kan: instance forall k (t :: k -> *) (u :: k -> *) (b :: k). Pandora.Pattern.Functor.Covariant.Covariant (Pandora.Paradigm.Basis.Kan.Ran t u b)
+ Pandora.Paradigm.Basis.Product: instance (Pandora.Pattern.Object.Quasiring.Quasiring a, Pandora.Pattern.Object.Quasiring.Quasiring b) => Pandora.Pattern.Object.Quasiring.Quasiring (Pandora.Paradigm.Basis.Product.Product a b)
+ Pandora.Paradigm.Basis.Tagged: instance forall k a (tag :: k). Pandora.Pattern.Object.Quasiring.Quasiring a => Pandora.Pattern.Object.Quasiring.Quasiring (Pandora.Paradigm.Basis.Tagged.Tagged tag a)
+ Pandora.Paradigm.Basis.Twister: instance Pandora.Pattern.Transformer.Lowerable.Lowerable Pandora.Paradigm.Basis.Twister.Twister
+ Pandora.Paradigm.Basis.Yoneda: instance Pandora.Pattern.Transformer.Liftable.Liftable Pandora.Paradigm.Basis.Yoneda.Yoneda
+ Pandora.Paradigm.Controlflow.Joint.Schemes.TU: instance Pandora.Pattern.Functor.Covariant.Covariant t => Pandora.Pattern.Transformer.Hoistable.Hoistable (Pandora.Paradigm.Controlflow.Joint.Schemes.TU.TU Pandora.Pattern.Functor.Covariant.Covariant Pandora.Pattern.Functor.Covariant.Covariant t)
+ Pandora.Paradigm.Controlflow.Joint.Schemes.TU: instance Pandora.Pattern.Functor.Extractable.Extractable t => Pandora.Pattern.Transformer.Lowerable.Lowerable (Pandora.Paradigm.Controlflow.Joint.Schemes.TU.TU Pandora.Pattern.Functor.Covariant.Covariant Pandora.Pattern.Functor.Covariant.Covariant t)
+ Pandora.Paradigm.Controlflow.Joint.Schemes.TU: instance Pandora.Pattern.Functor.Pointable.Pointable t => Pandora.Pattern.Transformer.Liftable.Liftable (Pandora.Paradigm.Controlflow.Joint.Schemes.TU.TU Pandora.Pattern.Functor.Covariant.Covariant Pandora.Pattern.Functor.Covariant.Covariant t)
+ Pandora.Paradigm.Controlflow.Joint.Schemes.TUT: TUT :: ((t :. (u :. t')) := a) -> TUT ct cu cv t u t' a
+ Pandora.Paradigm.Controlflow.Joint.Schemes.TUT: instance forall k1 k2 k3 k4 k5 (ct :: k5) (cu :: k4) (cv :: k3) (t :: k2 -> *) (u :: k1 -> k2) (t' :: * -> k1). Pandora.Paradigm.Controlflow.Joint.Interpreted.Interpreted (Pandora.Paradigm.Controlflow.Joint.Schemes.TUT.TUT ct cu cv t u t')
+ Pandora.Paradigm.Controlflow.Joint.Schemes.TUT: newtype TUT ct cu cv t u t' a
+ Pandora.Paradigm.Controlflow.Joint.Schemes.UT: instance Pandora.Pattern.Functor.Extractable.Extractable t => Pandora.Pattern.Transformer.Lowerable.Lowerable (Pandora.Paradigm.Controlflow.Joint.Schemes.UT.UT Pandora.Pattern.Functor.Covariant.Covariant Pandora.Pattern.Functor.Covariant.Covariant t)
+ Pandora.Paradigm.Controlflow.Joint.Schemes.UT: instance Pandora.Pattern.Functor.Pointable.Pointable t => Pandora.Pattern.Transformer.Liftable.Liftable (Pandora.Paradigm.Controlflow.Joint.Schemes.UT.UT Pandora.Pattern.Functor.Covariant.Covariant Pandora.Pattern.Functor.Covariant.Covariant t)
+ Pandora.Paradigm.Controlflow.Joint.Schemes.UTU: instance forall k1 k2 k3 k4 (ct :: k4) (cu :: k3) (t :: k1 -> k2) (u :: k2 -> *) (u' :: * -> k1). Pandora.Paradigm.Controlflow.Joint.Interpreted.Interpreted (Pandora.Paradigm.Controlflow.Joint.Schemes.UTU.UTU ct cu t u u')
+ Pandora.Paradigm.Inventory.Equipment: instance Pandora.Paradigm.Controlflow.Joint.Transformer.Comonadic.Comonadic (Pandora.Paradigm.Inventory.Equipment.Equipment e)
+ Pandora.Paradigm.Inventory.State: instance Pandora.Pattern.Functor.Bindable.Bindable u => Pandora.Pattern.Functor.Applicative.Applicative (Pandora.Paradigm.Controlflow.Joint.Schemes.TUT.TUT Pandora.Pattern.Functor.Covariant.Covariant Pandora.Pattern.Functor.Covariant.Covariant Pandora.Pattern.Functor.Covariant.Covariant ((->) s) u ((Pandora.Paradigm.Basis.Product.:*:) s))
+ Pandora.Paradigm.Inventory.State: instance Pandora.Pattern.Functor.Bindable.Bindable u => Pandora.Pattern.Functor.Bindable.Bindable (Pandora.Paradigm.Controlflow.Joint.Schemes.TUT.TUT Pandora.Pattern.Functor.Covariant.Covariant Pandora.Pattern.Functor.Covariant.Covariant Pandora.Pattern.Functor.Covariant.Covariant ((->) s) u ((Pandora.Paradigm.Basis.Product.:*:) s))
+ Pandora.Paradigm.Inventory.State: instance Pandora.Pattern.Functor.Covariant.Covariant u => Pandora.Pattern.Functor.Covariant.Covariant (Pandora.Paradigm.Controlflow.Joint.Schemes.TUT.TUT Pandora.Pattern.Functor.Covariant.Covariant Pandora.Pattern.Functor.Covariant.Covariant Pandora.Pattern.Functor.Covariant.Covariant ((->) s) u ((Pandora.Paradigm.Basis.Product.:*:) s))
+ Pandora.Paradigm.Inventory.State: instance Pandora.Pattern.Functor.Monad.Monad u => Pandora.Pattern.Functor.Monad.Monad (Pandora.Paradigm.Controlflow.Joint.Schemes.TUT.TUT Pandora.Pattern.Functor.Covariant.Covariant Pandora.Pattern.Functor.Covariant.Covariant Pandora.Pattern.Functor.Covariant.Covariant ((->) s) u ((Pandora.Paradigm.Basis.Product.:*:) s))
+ Pandora.Paradigm.Inventory.State: instance Pandora.Pattern.Functor.Pointable.Pointable u => Pandora.Pattern.Functor.Pointable.Pointable (Pandora.Paradigm.Controlflow.Joint.Schemes.TUT.TUT Pandora.Pattern.Functor.Covariant.Covariant Pandora.Pattern.Functor.Covariant.Covariant Pandora.Pattern.Functor.Covariant.Covariant ((->) s) u ((Pandora.Paradigm.Basis.Product.:*:) s))
+ Pandora.Paradigm.Inventory.Store: instance Pandora.Pattern.Functor.Covariant.Covariant u => Pandora.Pattern.Functor.Covariant.Covariant (Pandora.Paradigm.Controlflow.Joint.Schemes.TUT.TUT Pandora.Pattern.Functor.Covariant.Covariant Pandora.Pattern.Functor.Covariant.Covariant Pandora.Pattern.Functor.Covariant.Covariant ((Pandora.Paradigm.Basis.Product.:*:) p) u ((->) p))
+ Pandora.Paradigm.Inventory.Store: instance Pandora.Pattern.Functor.Extendable.Extendable u => Pandora.Pattern.Functor.Extendable.Extendable (Pandora.Paradigm.Controlflow.Joint.Schemes.TUT.TUT Pandora.Pattern.Functor.Covariant.Covariant Pandora.Pattern.Functor.Covariant.Covariant Pandora.Pattern.Functor.Covariant.Covariant ((Pandora.Paradigm.Basis.Product.:*:) p) u ((->) p))
+ Pandora.Paradigm.Inventory.Store: instance Pandora.Pattern.Functor.Extractable.Extractable u => Pandora.Pattern.Functor.Extractable.Extractable (Pandora.Paradigm.Controlflow.Joint.Schemes.TUT.TUT Pandora.Pattern.Functor.Covariant.Covariant Pandora.Pattern.Functor.Covariant.Covariant Pandora.Pattern.Functor.Covariant.Covariant ((Pandora.Paradigm.Basis.Product.:*:) p) u ((->) p))
+ Pandora.Paradigm.Structure.Specific.Stream: type Stream = Twister Identity
+ Pandora.Pattern.Object.Chain: instance Pandora.Pattern.Object.Chain.Chain Pandora.Pattern.Object.Chain.Ordering
+ Pandora.Pattern.Object.Chain: instance Pandora.Pattern.Object.Setoid.Setoid Pandora.Pattern.Object.Chain.Ordering
+ Pandora.Pattern.Object.Group: invert :: Group a => a -> a
+ Pandora.Pattern.Object.Ringoid: infixl 7 *
+ Pandora.Pattern.Object.Semigroup: infixl 6 +
+ Pandora.Pattern.Object.Semiring: class Ringoid a => Semiring a
+ Pandora.Pattern.Object.Setoid: instance Pandora.Pattern.Object.Group.Group Pandora.Pattern.Object.Setoid.Boolean
+ Pandora.Pattern.Object.Setoid: instance Pandora.Pattern.Object.Monoid.Monoid Pandora.Pattern.Object.Setoid.Boolean
+ Pandora.Pattern.Object.Setoid: instance Pandora.Pattern.Object.Quasiring.Quasiring Pandora.Pattern.Object.Setoid.Boolean
+ Pandora.Pattern.Object.Setoid: instance Pandora.Pattern.Object.Ringoid.Ringoid Pandora.Pattern.Object.Setoid.Boolean
+ Pandora.Pattern.Object.Setoid: instance Pandora.Pattern.Object.Semigroup.Semigroup Pandora.Pattern.Object.Setoid.Boolean
+ Pandora.Pattern.Object.Setoid: instance Pandora.Pattern.Object.Setoid.Setoid Pandora.Pattern.Object.Setoid.Boolean
+ Pandora.Pattern.Transformer.Hoistable: class Hoistable t
+ Pandora.Pattern.Transformer.Hoistable: hoist :: Hoistable t => (u ~> v) -> t u ~> t v
+ Pandora.Pattern.Transformer.Liftable: class Liftable t
+ Pandora.Pattern.Transformer.Liftable: lift :: (Liftable t, Pointable u) => u ~> t u
+ Pandora.Pattern.Transformer.Lowerable: class Lowerable t
+ Pandora.Pattern.Transformer.Lowerable: lower :: (Lowerable t, Extractable u) => t u ~> u
- Pandora.Paradigm.Basis.Kan: Lan :: ((t b -> a) -> u b) -> Lan
+ Pandora.Paradigm.Basis.Kan: Lan :: ((t b -> a) -> u b) -> Lan t u b a
- Pandora.Paradigm.Basis.Kan: Ran :: ((a -> t b) -> u b) -> Ran
+ Pandora.Paradigm.Basis.Kan: Ran :: ((a -> t b) -> u b) -> Ran t u b a
- Pandora.Paradigm.Basis.Kan: newtype Lan (t :: * -> *) (u :: * -> *) (b :: *) (a :: *)
+ Pandora.Paradigm.Basis.Kan: newtype Lan t u b a
- Pandora.Paradigm.Basis.Kan: newtype Ran (t :: * -> *) (u :: * -> *) (b :: *) (a :: *)
+ Pandora.Paradigm.Basis.Kan: newtype Ran t u b a
- Pandora.Paradigm.Basis.Tagged: retag :: Tagged old a -> Tagged new a
+ Pandora.Paradigm.Basis.Tagged: retag :: Tagged old ~> Tagged new
- Pandora.Paradigm.Basis.Tagged: tagself :: a -> Tagged a a
+ Pandora.Paradigm.Basis.Tagged: tagself :: a |-> Tagged a
- Pandora.Paradigm.Controlflow.Joint.Schemes.UTU: UTU :: ((u :. t u) := a) -> UTU ct cu t u a
+ Pandora.Paradigm.Controlflow.Joint.Schemes.UTU: UTU :: ((u :. (t :. u')) := a) -> UTU ct cu t u u' a
- Pandora.Paradigm.Controlflow.Joint.Schemes.UTU: newtype UTU ct cu t u a
+ Pandora.Paradigm.Controlflow.Joint.Schemes.UTU: newtype UTU ct cu t u u' a
- Pandora.Pattern.Object.Group: class Monoid a => Group a
+ Pandora.Pattern.Object.Group: class Quasiring a => Group a

Files

CHANGELOG.md view
@@ -169,3 +169,19 @@ * Define `Equipment` datatype to use `Comonad` `Product` transformer * Define adaptable `retrieve` method of `Equipment` * Extract `Imprint` from `Environment` module++# 0.2.5+* Define `Semiring` typeclass+* Define `Stream` module and type+* Move `Liftable` and `Lowerable` modules from `Functor` to `Transformer` submodule+* Define `Hoistable` module and typeclass+* Rename `TUV` joint schema to `TUT`+* Modify `UTU` joint schema internals+* Remove `&&` and `||` `Boolean` operators (use `*` and `+` instead)+* Define precedence for `*` and `+`+* Change superclass of `Group` class - `Quasiring` instead of `Monoid`+* Rename `Jet`'s constructor to `Jet` (previously - `:-`)+* Rename `Group`'s method from `inverse` to `invert`+* Remove `not` method of `Boolean`, (use `invert` instead)+* Remove `Injective` and `Has` type families+* Change superclasseses for `Liftable` and `Lowerable` classes to provide a law
Pandora/Paradigm/Basis.hs view
@@ -13,6 +13,7 @@ import Pandora.Paradigm.Basis.Conclusion as Exports import Pandora.Paradigm.Basis.Maybe as Exports import Pandora.Paradigm.Basis.Endo as Exports+import Pandora.Paradigm.Basis.Kan as Exports import Pandora.Paradigm.Basis.Jet as Exports import Pandora.Paradigm.Basis.Jack as Exports import Pandora.Paradigm.Basis.Proxy as Exports
Pandora/Paradigm/Basis/Constant.hs view
@@ -12,9 +12,10 @@ import Pandora.Pattern.Object.Semigroup (Semigroup ((+))) import Pandora.Pattern.Object.Monoid (Monoid (zero)) import Pandora.Pattern.Object.Ringoid (Ringoid ((*)))+import Pandora.Pattern.Object.Quasiring (Quasiring (one)) import Pandora.Pattern.Object.Semilattice (Infimum ((/\)), Supremum ((\/))) import Pandora.Pattern.Object.Lattice (Lattice)-import Pandora.Pattern.Object.Group (Group (inverse))+import Pandora.Pattern.Object.Group (Group (invert))  newtype Constant a b = Constant a @@ -48,6 +49,9 @@ instance Ringoid a => Ringoid (Constant a b) where 	Constant x * Constant y = Constant $ x * y +instance Quasiring a => Quasiring (Constant a b) where+	 one = Constant one+ instance Infimum a => Infimum (Constant a b) where 	Constant x /\ Constant y = Constant $ x /\ y @@ -57,4 +61,4 @@ instance Lattice a => Lattice (Constant a b) where  instance Group a => Group (Constant a b) where-	inverse (Constant x) = Constant $ inverse x+	invert (Constant x) = Constant $ invert x
Pandora/Paradigm/Basis/Continuation.hs view
@@ -8,7 +8,7 @@ import Pandora.Pattern.Functor.Applicative (Applicative ((<*>))) import Pandora.Pattern.Functor.Bindable (Bindable ((>>=))) import Pandora.Pattern.Functor.Monad (Monad)-import Pandora.Pattern.Functor.Liftable (Liftable (lift))+import Pandora.Pattern.Transformer.Liftable (Liftable (lift)) import Pandora.Pattern.Functor.Divariant (($))  newtype Continuation r t a = Continuation { continue :: (->) ::|:. a :. t := r }
Pandora/Paradigm/Basis/Free.hs view
@@ -8,7 +8,7 @@ import Pandora.Pattern.Functor.Applicative (Applicative ((<*>))) import Pandora.Pattern.Functor.Traversable (Traversable ((->>), (->>>))) import Pandora.Pattern.Functor.Bindable (Bindable ((>>=)))-import Pandora.Pattern.Functor.Liftable (Liftable (lift))+import Pandora.Pattern.Transformer.Liftable (Liftable (lift)) import Pandora.Pattern.Functor.Divariant (($))  data Free t a = Pure a | Impure (t :. Free t := a)
Pandora/Paradigm/Basis/Identity.hs view
@@ -18,9 +18,10 @@ import Pandora.Pattern.Object.Semigroup (Semigroup ((+))) import Pandora.Pattern.Object.Monoid (Monoid (zero)) import Pandora.Pattern.Object.Ringoid (Ringoid ((*)))+import Pandora.Pattern.Object.Quasiring (Quasiring (one)) import Pandora.Pattern.Object.Semilattice (Infimum ((/\)), Supremum ((\/))) import Pandora.Pattern.Object.Lattice (Lattice)-import Pandora.Pattern.Object.Group (Group (inverse))+import Pandora.Pattern.Object.Group (Group (invert))  newtype Identity a = Identity a @@ -71,6 +72,9 @@ instance Ringoid a => Ringoid (Identity a) where 	Identity x * Identity y = Identity $ x * y +instance Quasiring a => Quasiring (Identity a) where+	 one = Identity one+ instance Infimum a => Infimum (Identity a) where 	Identity x /\ Identity y = Identity $ x /\ y @@ -80,4 +84,4 @@ instance Lattice a => Lattice (Identity a) where  instance Group a => Group (Identity a) where-	inverse (Identity x) = Identity $ inverse x+	invert (Identity x) = Identity $ invert x
Pandora/Paradigm/Basis/Jack.hs view
@@ -9,7 +9,7 @@ import Pandora.Pattern.Functor.Applicative (Applicative ((<*>))) import Pandora.Pattern.Functor.Traversable (Traversable ((->>), traverse)) import Pandora.Pattern.Functor.Distributive (Distributive ((>>-), distribute))-import Pandora.Pattern.Functor.Liftable (Liftable (lift))+import Pandora.Pattern.Transformer.Liftable (Liftable (lift)) import Pandora.Pattern.Functor.Divariant (($)) import Pandora.Pattern.Object.Setoid (Setoid ((==)), Boolean (False)) import Pandora.Pattern.Object.Chain (Chain ((<=>)), Ordering (Less, Greater))
Pandora/Paradigm/Basis/Jet.hs view
@@ -7,18 +7,16 @@ import Pandora.Pattern.Functor.Applicative (Applicative ((<*>))) import Pandora.Pattern.Functor.Traversable (Traversable ((->>), (->>>))) -infixr 6 :---data Jet t a = a :- Jet t (t a)+data Jet t a = Jet a (Jet t (t a))  instance Covariant t => Covariant (Jet t) where-	f <$> a :- as = f a :- f <$$> as+	f <$> Jet a as = Jet (f a) (f <$$> as)  instance Traversable t => Traversable (Jet t) where-	a :- as ->> f = (:-) <$> f a <*> as ->>> f+	Jet a as ->> f = Jet <$> f a <*> as ->>> f  instance (forall u . Avoidable u) => Pointable (Jet t) where-	point x = x :- empty+	point x = Jet x empty  instance Covariant t => Extractable (Jet t) where-	extract (x :- _) = x+	extract (Jet x _) = x
Pandora/Paradigm/Basis/Kan.hs view
@@ -4,15 +4,22 @@ import Pandora.Pattern.Functor.Contravariant (Contravariant ((>$<))) import Pandora.Pattern.Functor.Covariant (Covariant ((<$>))) import Pandora.Pattern.Functor.Divariant (($))+import Pandora.Paradigm.Controlflow.Joint.Interpreted (Interpreted (Primary, run)) -newtype Lan (t :: * -> *) (u :: * -> *) (b :: *) (a :: *) =-	Lan { lan :: (t b -> a) -> u b }+newtype Lan t u b a = Lan ((t b -> a) -> u b)  instance Contravariant (Lan t u b) where 	f >$< Lan x = Lan $ x . (f .) -newtype Ran (t :: * -> *) (u :: * -> *) (b :: *) (a :: *) =-	Ran { ran :: (a -> t b) -> u b }+instance Interpreted (Lan t u b) where+	type Primary (Lan t u b) a = (t b -> a) -> u b+	run (Lan x) = x +newtype Ran t u b a = Ran ((a -> t b) -> u b)+ instance Covariant (Ran t u b) where 	f <$> Ran x = Ran $ x . (. f)++instance Interpreted (Ran t u b) where+	type Primary (Ran t u b) a = (a -> t b) -> u b+	run (Ran x) = x
Pandora/Paradigm/Basis/Product.hs view
@@ -1,4 +1,4 @@-module Pandora.Paradigm.Basis.Product (Product (..), type (:*:), Has, Injective+module Pandora.Paradigm.Basis.Product (Product (..), type (:*:) 	, delta, swap, attached, curry, uncurry) where  import Pandora.Pattern.Functor.Covariant (Covariant ((<$>)))@@ -9,13 +9,14 @@ import Pandora.Pattern.Functor.Adjoint (Adjoint ((-|), (|-))) import Pandora.Pattern.Functor.Bivariant (Bivariant ((<->))) import Pandora.Pattern.Functor.Divariant (($))-import Pandora.Pattern.Object.Setoid (Setoid ((==)), (&&))+import Pandora.Pattern.Object.Setoid (Setoid ((==))) import Pandora.Pattern.Object.Semigroup (Semigroup ((+))) import Pandora.Pattern.Object.Monoid (Monoid (zero)) import Pandora.Pattern.Object.Ringoid (Ringoid ((*)))+import Pandora.Pattern.Object.Quasiring (Quasiring (one)) import Pandora.Pattern.Object.Semilattice (Infimum ((/\)), Supremum ((\/))) import Pandora.Pattern.Object.Lattice (Lattice)-import Pandora.Pattern.Object.Group (Group (inverse))+import Pandora.Pattern.Object.Group (Group (invert))  infixr 1 :*: @@ -45,7 +46,7 @@ 	f <-> g = \(x :*: y) -> f x :*: g y  instance (Setoid a, Setoid b) => Setoid (Product a b) where-	(x :*: y) == (x' :*: y') = x == x' && y == y'+	(x :*: y) == (x' :*: y') = (x == x') * (y == y')  instance (Semigroup a, Semigroup b) => Semigroup (Product a b) where 	(x :*: y) + (x' :*: y') = x + x' :*: y + y'@@ -56,6 +57,9 @@ instance (Ringoid a, Ringoid b) => Ringoid (Product a b) where 	(x :*: y) * (x' :*: y') = x * x' :*: y * y' +instance (Quasiring a, Quasiring b) => Quasiring (Product a b) where+	one = one :*: one+ instance (Infimum a, Infimum b) => Infimum (Product a b) where 	(x :*: y) /\ (x' :*: y') = x /\ x' :*: y /\ y' @@ -65,7 +69,7 @@ instance (Lattice a, Lattice b) => Lattice (Product a b) where  instance (Group a, Group b) => Group (Product a b) where-	inverse (x :*: y) = inverse x :*: inverse y+	invert (x :*: y) = invert x :*: invert y  delta :: a -> a :*: a delta x = x :*: x@@ -81,16 +85,3 @@  uncurry :: (a -> b -> c) -> (a :*: b -> c) uncurry f (x :*: y) = f x y---- Constraint on the content of some type-type family Has x xs where-	Has x (x :*: xs) = ()-	Has x (y :*: xs) = Has x xs-	Has x x = ()---- All elements of the left product are in the right product-type family Injective xs ys where-	Injective (x :*: xs) ys = (Has x ys, Injective xs ys)-	Injective x (x :*: ys) = ()-	Injective x (y :*: ys) = Has x ys-	Injective x x = ()
Pandora/Paradigm/Basis/Tagged.hs view
@@ -1,5 +1,6 @@ module Pandora.Paradigm.Basis.Tagged (Tagged (..), retag, tagself, type (:#)) where +import Pandora.Core.Functor (type (|->), type (~>)) import Pandora.Pattern.Category ((.)) import Pandora.Pattern.Functor.Covariant (Covariant ((<$>))) import Pandora.Pattern.Functor.Extractable (Extractable (extract))@@ -18,9 +19,10 @@ import Pandora.Pattern.Object.Semigroup (Semigroup ((+))) import Pandora.Pattern.Object.Monoid (Monoid (zero)) import Pandora.Pattern.Object.Ringoid (Ringoid ((*)))+import Pandora.Pattern.Object.Quasiring (Quasiring (one)) import Pandora.Pattern.Object.Semilattice (Infimum ((/\)), Supremum ((\/))) import Pandora.Pattern.Object.Lattice (Lattice)-import Pandora.Pattern.Object.Group (Group (inverse))+import Pandora.Pattern.Object.Group (Group (invert))  newtype Tagged tag a = Tag a @@ -73,6 +75,9 @@ instance Ringoid a => Ringoid (Tagged tag a) where 	Tag x * Tag y = Tag $ x * y +instance Quasiring a => Quasiring (Tagged tag a) where+	one = Tag one+ instance Infimum a => Infimum (Tagged tag a) where 	Tag x /\ Tag y = Tag $ x /\ y @@ -82,10 +87,10 @@ instance Lattice a => Lattice (Tagged tag a) where  instance Group a => Group (Tagged tag a) where-	inverse (Tag x) = Tag $ inverse x+	invert (Tag x) = Tag $ invert x -retag :: Tagged old a -> Tagged new a+retag :: Tagged old ~> Tagged new retag (Tag x) = Tag x -tagself :: a -> Tagged a a+tagself :: a |-> Tagged a tagself = Tag
Pandora/Paradigm/Basis/Twister.hs view
@@ -12,10 +12,11 @@ import Pandora.Pattern.Functor.Extendable (Extendable ((=>>), extend)) import Pandora.Pattern.Functor.Monad (Monad) import Pandora.Pattern.Functor.Comonad (Comonad)-import Pandora.Pattern.Functor.Lowerable (Lowerable (lower))+import Pandora.Pattern.Transformer.Lowerable (Lowerable (lower)) import Pandora.Pattern.Functor.Divariant (($))-import Pandora.Pattern.Object.Setoid (Setoid ((==)), (&&))+import Pandora.Pattern.Object.Setoid (Setoid ((==))) import Pandora.Pattern.Object.Semigroup (Semigroup ((+)))+import Pandora.Pattern.Object.Ringoid ((*)) import Pandora.Pattern.Object.Monoid (Monoid (zero))  data Twister t a = Twister a (t :. Twister t := a)@@ -49,7 +50,7 @@ 	lower (Twister _ xs) = extract <$> xs  instance (Setoid a, forall b . Setoid b => Setoid (t b)) => Setoid (Twister t a) where-	Twister x xs == Twister y ys = x == y && xs == ys+	Twister x xs == Twister y ys = (x == y) * (xs == ys)  instance (Semigroup a, forall b . Semigroup b => Semigroup (t b)) => Semigroup (Twister t a) where 	Twister x xs + Twister y ys = Twister (x + y) $ xs + ys
Pandora/Paradigm/Basis/Yoneda.hs view
@@ -9,7 +9,7 @@ import Pandora.Pattern.Functor.Pointable (Pointable (point)) import Pandora.Pattern.Functor.Extractable (Extractable (extract)) import Pandora.Pattern.Functor.Adjoint (Adjoint ((-|), (|-)))-import Pandora.Pattern.Functor.Liftable (Liftable (lift))+import Pandora.Pattern.Transformer.Liftable (Liftable (lift)) import Pandora.Pattern.Functor.Divariant (($))  newtype Yoneda t a = Yoneda
Pandora/Paradigm/Controlflow/Joint/Schemes.hs view
@@ -3,5 +3,5 @@ import Pandora.Paradigm.Controlflow.Joint.Schemes.UTU as Exports import Pandora.Paradigm.Controlflow.Joint.Schemes.UT as Exports import Pandora.Paradigm.Controlflow.Joint.Schemes.TUVW as Exports-import Pandora.Paradigm.Controlflow.Joint.Schemes.TUV as Exports+import Pandora.Paradigm.Controlflow.Joint.Schemes.TUT as Exports import Pandora.Paradigm.Controlflow.Joint.Schemes.TU as Exports
Pandora/Paradigm/Controlflow/Joint/Schemes/TU.hs view
@@ -1,6 +1,14 @@ module Pandora.Paradigm.Controlflow.Joint.Schemes.TU (TU (..)) where  import Pandora.Core.Functor (type (:.), type (:=))+import Pandora.Pattern.Category ((.))+import Pandora.Pattern.Functor.Covariant (Covariant ((<$>)))+import Pandora.Pattern.Functor.Pointable (Pointable (point))+import Pandora.Pattern.Functor.Extractable (Extractable (extract))+import Pandora.Pattern.Functor.Divariant (($))+import Pandora.Pattern.Transformer.Liftable (Liftable (lift))+import Pandora.Pattern.Transformer.Lowerable (Lowerable (lower))+import Pandora.Pattern.Transformer.Hoistable (Hoistable (hoist)) import Pandora.Paradigm.Controlflow.Joint.Interpreted (Interpreted (Primary, run))  newtype TU ct cu t u a = TU (t :. u := a)@@ -8,3 +16,12 @@ instance Interpreted (TU ct cu t u) where 	type Primary (TU ct cu t u) a = t :. u := a 	run (TU x) = x++instance Pointable t => Liftable (TU Covariant Covariant t) where+	lift = TU . point++instance Extractable t => Lowerable (TU Covariant Covariant t) where+	lower (TU x) = extract x++instance Covariant t => Hoistable (TU Covariant Covariant t) where+	hoist f (TU x) = TU $ f <$> x
+ Pandora/Paradigm/Controlflow/Joint/Schemes/TUT.hs view
@@ -0,0 +1,10 @@+module Pandora.Paradigm.Controlflow.Joint.Schemes.TUT (TUT (..)) where++import Pandora.Core.Functor (type (:.), type (:=))+import Pandora.Paradigm.Controlflow.Joint.Interpreted (Interpreted (Primary, run))++newtype TUT ct cu cv t u t' a = TUT (t :. u :. t' := a)++instance Interpreted (TUT ct cu cv t u t') where+	type Primary (TUT ct cu cv t u t') a = t :. u :. t' := a+	run (TUT x) = x
− Pandora/Paradigm/Controlflow/Joint/Schemes/TUV.hs
@@ -1,10 +0,0 @@-module Pandora.Paradigm.Controlflow.Joint.Schemes.TUV (TUV (..)) where--import Pandora.Core.Functor (type (:.), type (:=))-import Pandora.Paradigm.Controlflow.Joint.Interpreted (Interpreted (Primary, run))--newtype TUV ct cu cv t u v a = TUV (t :. u :. v := a)--instance Interpreted (TUV ct cu cv t u v) where-	type Primary (TUV ct cu cv t u v) a = t :. u :. v := a-	run (TUV x) = x
Pandora/Paradigm/Controlflow/Joint/Schemes/UT.hs view
@@ -1,6 +1,12 @@ module Pandora.Paradigm.Controlflow.Joint.Schemes.UT (UT (..)) where  import Pandora.Core.Functor (type (:.), type (:=))+import Pandora.Pattern.Functor.Covariant (Covariant ((<$>)))+import Pandora.Pattern.Functor.Pointable (Pointable (point))+import Pandora.Pattern.Functor.Extractable (Extractable (extract))+import Pandora.Pattern.Functor.Divariant (($))+import Pandora.Pattern.Transformer.Liftable (Liftable (lift))+import Pandora.Pattern.Transformer.Lowerable (Lowerable (lower)) import Pandora.Paradigm.Controlflow.Joint.Interpreted (Interpreted (Primary, run))  newtype UT ct cu t u a = UT (u :. t := a)@@ -8,3 +14,9 @@ instance Interpreted (UT ct cu t u) where 	type Primary (UT ct cu t u) a = u :. t := a 	run (UT x) = x++instance Pointable t => Liftable (UT Covariant Covariant t) where+	lift x = UT $ point <$> x++instance Extractable t => Lowerable (UT Covariant Covariant t) where+	lower (UT x) = extract <$> x
Pandora/Paradigm/Controlflow/Joint/Schemes/UTU.hs view
@@ -3,8 +3,8 @@ import Pandora.Core.Functor (type (:.), type (:=)) import Pandora.Paradigm.Controlflow.Joint.Interpreted (Interpreted (Primary, run)) -newtype UTU ct cu t u a = UTU (u :. t u := a)+newtype UTU ct cu t u u' a = UTU (u :. t :. u' := a) -instance Interpreted (UTU ct cu t u) where-	type Primary (UTU ct cu t u) a = u :. t u := a+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
Pandora/Paradigm/Inventory/Equipment.hs view
@@ -4,6 +4,7 @@  import Pandora.Paradigm.Basis.Product (Product ((:*:)), type (:*:), attached) import Pandora.Paradigm.Controlflow.Joint.Adaptable (Adaptable (adapt))+import Pandora.Paradigm.Controlflow.Joint.Transformer.Comonadic (Comonadic (flick, bring), (:<) (TC)) import Pandora.Paradigm.Controlflow.Joint.Interpreted (Interpreted (Primary, run)) import Pandora.Paradigm.Controlflow.Joint.Schematic (Schematic) import Pandora.Paradigm.Controlflow.Joint.Schemes.TU (TU (TU))@@ -25,11 +26,15 @@ instance Extendable (Equipment e) where 	Equipment (e :*: x) =>> f = Equipment . (:*:) e . f . Equipment $ e :*: x -type instance Schematic Comonad (Equipment e) u = TU Covariant Covariant ((:*:) e) u- instance Interpreted (Equipment e) where 	type Primary (Equipment e) a = e :*: a 	run (Equipment x) = x++type instance Schematic Comonad (Equipment e) u = TU Covariant Covariant ((:*:) e) u++instance Comonadic (Equipment e) where+	flick (TC (TU x)) = extract x+	bring (TC (TU x)) = Equipment $ extract <$> x  type Equipped e t = Adaptable t (Equipment e) 
Pandora/Paradigm/Inventory/State.hs view
@@ -20,7 +20,7 @@ import Pandora.Paradigm.Controlflow.Joint.Interpreted (Interpreted (Primary, run)) import Pandora.Paradigm.Controlflow.Joint.Transformer.Monadic (Monadic (lay, wrap), (:>) (TM)) import Pandora.Paradigm.Controlflow.Joint.Schematic (Schematic)-import Pandora.Paradigm.Controlflow.Joint.Schemes.TUV (TUV (TUV))+import Pandora.Paradigm.Controlflow.Joint.Schemes.TUT (TUT (TUT)) import Pandora.Paradigm.Basis.Predicate (Predicate (predicate)) import Pandora.Paradigm.Basis.Product (Product ((:*:)), type (:*:), attached, delta, uncurry) @@ -55,27 +55,27 @@ 	run (State x) = x  type instance Schematic Monad (State s) u =-	TUV Covariant Covariant Covariant ((->) s) u ((:*:) s)+	TUT Covariant Covariant Covariant ((->) s) u ((:*:) s)  instance Monadic (State s) where-	lay x = TM . TUV $ \s -> (s :*:) <$> x-	wrap x = TM . TUV $ point <$> run x+	lay x = TM . TUT $ \s -> (s :*:) <$> x+	wrap x = TM . TUT $ point <$> run x  type Stateful s = Adaptable (State s) -instance Covariant u => Covariant (TUV Covariant Covariant Covariant ((->) s) u ((:*:) s)) where-	f <$> TUV x = TUV $ \old -> f <$$> x old+instance Covariant u => Covariant (TUT Covariant Covariant Covariant ((->) s) u ((:*:) s)) where+	f <$> TUT x = TUT $ \old -> f <$$> x old -instance Bindable u => Applicative (TUV Covariant Covariant Covariant ((->) s) u ((:*:) s)) where-	TUV f <*> TUV x = TUV $ \old -> f old >>= \(new :*: g) -> g <$$> x new+instance Bindable u => Applicative (TUT Covariant Covariant Covariant ((->) s) u ((:*:) s)) where+	TUT f <*> TUT x = TUT $ \old -> f old >>= \(new :*: g) -> g <$$> x new -instance Pointable u => Pointable (TUV Covariant Covariant Covariant ((->) s) u ((:*:) s)) where-	point x = TUV $ \s -> point $ s :*: x+instance Pointable u => Pointable (TUT Covariant Covariant Covariant ((->) s) u ((:*:) s)) where+	point x = TUT $ \s -> point $ s :*: x -instance Bindable u => Bindable (TUV Covariant Covariant Covariant ((->) s) u ((:*:) s)) where-	TUV x >>= f = TUV $ \old -> x old >>= \(new :*: y) -> ($ new) . run . f $ y+instance Bindable u => Bindable (TUT Covariant Covariant Covariant ((->) s) u ((:*:) s)) where+	TUT x >>= f = TUT $ \old -> x old >>= \(new :*: y) -> ($ new) . run . f $ y -instance Monad u => Monad (TUV Covariant Covariant Covariant ((->) s) u ((:*:) s)) where+instance Monad u => Monad (TUT Covariant Covariant Covariant ((->) s) u ((:*:) s)) where  current :: Stateful s t => t s current = adapt $ State delta
Pandora/Paradigm/Inventory/Store.hs view
@@ -14,7 +14,7 @@ import Pandora.Paradigm.Controlflow.Joint.Adaptable (Adaptable (adapt)) import Pandora.Paradigm.Controlflow.Joint.Interpreted (Interpreted (Primary, run)) import Pandora.Paradigm.Controlflow.Joint.Schematic (Schematic)-import Pandora.Paradigm.Controlflow.Joint.Schemes.TUV (TUV (TUV))+import Pandora.Paradigm.Controlflow.Joint.Schemes.TUT (TUT (TUT)) import Pandora.Paradigm.Controlflow.Joint.Transformer.Comonadic (Comonadic (flick, bring), (:<) (TC))  newtype Store p a = Store ((:*:) p :. (->) p := a)@@ -36,22 +36,22 @@ 	run (Store x) = x  type instance Schematic Comonad (Store p) u =-	TUV Covariant Covariant Covariant ((:*:) p) u ((->) p)+	TUT Covariant Covariant Covariant ((:*:) p) u ((->) p)  instance Comonadic (Store p) where-	flick (TC (TUV (p :*: f))) = ($ p) <$> f-	bring (TC (TUV (p :*: f))) = Store $ p :*: extract f+	flick (TC (TUT (p :*: f))) = ($ p) <$> f+	bring (TC (TUT (p :*: f))) = Store $ p :*: extract f  type Storable s x = Adaptable x (Store s) -instance Covariant u => Covariant (TUV Covariant Covariant Covariant ((:*:) p) u ((->) p)) where-	f <$> TUV (p :*: x) = TUV . (:*:) p $ f <$$> x+instance Covariant u => Covariant (TUT Covariant Covariant Covariant ((:*:) p) u ((->) p)) where+	f <$> TUT (p :*: x) = TUT . (:*:) p $ f <$$> x -instance Extractable u => Extractable (TUV Covariant Covariant Covariant ((:*:) p) u ((->) p)) where-	extract (TUV (p :*: x)) = extract x p+instance Extractable u => Extractable (TUT Covariant Covariant Covariant ((:*:) p) u ((->) p)) where+	extract (TUT (p :*: x)) = extract x p -instance Extendable u => Extendable (TUV Covariant Covariant Covariant ((:*:) p) u ((->) p)) where-	TUV (old :*: x) =>> f = TUV . (:*:) old $ x =>> (\x' new -> f . TUV . (:*:) new $ x')+instance Extendable u => Extendable (TUT Covariant Covariant Covariant ((:*:) p) u ((->) p)) where+	TUT (old :*: x) =>> f = TUT . (:*:) old $ x =>> (\x' new -> f . TUT . (:*:) new $ x')  position :: Storable s t => t a -> s position = attached . run @(Store _) . adapt
Pandora/Paradigm/Structure/Specific.hs view
@@ -1,5 +1,6 @@ module Pandora.Paradigm.Structure.Specific (module Exports) where -import Pandora.Paradigm.Structure.Specific.Binary as Exports-import Pandora.Paradigm.Structure.Specific.Graph as Exports+import Pandora.Paradigm.Structure.Specific.Stream as Exports import Pandora.Paradigm.Structure.Specific.Stack as Exports+import Pandora.Paradigm.Structure.Specific.Graph as Exports+import Pandora.Paradigm.Structure.Specific.Binary as Exports
+ Pandora/Paradigm/Structure/Specific/Stream.hs view
@@ -0,0 +1,6 @@+module Pandora.Paradigm.Structure.Specific.Stream (Stream) where++import Pandora.Paradigm.Basis.Identity (Identity)+import Pandora.Paradigm.Basis.Twister (Twister)++type Stream = Twister Identity
Pandora/Pattern/Functor.hs view
@@ -2,8 +2,6 @@  import Pandora.Pattern.Functor.Bivariant as Exports import Pandora.Pattern.Functor.Divariant as Exports-import Pandora.Pattern.Functor.Lowerable as Exports-import Pandora.Pattern.Functor.Liftable as Exports import Pandora.Pattern.Functor.Comonad as Exports import Pandora.Pattern.Functor.Monad as Exports import Pandora.Pattern.Functor.Representable as Exports
− Pandora/Pattern/Functor/Liftable.hs
@@ -1,7 +0,0 @@-module Pandora.Pattern.Functor.Liftable (Liftable (..)) where--import Pandora.Core.Functor (type (~>))-import Pandora.Pattern.Functor.Covariant (Covariant)--class Liftable t where-	lift :: Covariant u => u ~> t u
− Pandora/Pattern/Functor/Lowerable.hs
@@ -1,7 +0,0 @@-module Pandora.Pattern.Functor.Lowerable (Lowerable (..)) where--import Pandora.Core.Functor (type (~>))-import Pandora.Pattern.Functor.Covariant (Covariant)--class Lowerable t where-	lower :: Covariant u => t u ~> u
Pandora/Pattern/Object.hs view
@@ -5,6 +5,7 @@ import Pandora.Pattern.Object.Group as Exports import Pandora.Pattern.Object.Monoid as Exports import Pandora.Pattern.Object.Quasiring as Exports+import Pandora.Pattern.Object.Semiring as Exports import Pandora.Pattern.Object.Ringoid as Exports import Pandora.Pattern.Object.Semigroup as Exports import Pandora.Pattern.Object.Chain as Exports
Pandora/Pattern/Object/Chain.hs view
@@ -1,13 +1,6 @@ module Pandora.Pattern.Object.Chain (Ordering (..), order, Chain (..)) where -import Pandora.Pattern.Object.Setoid (Boolean (True, False), Setoid)--data Ordering = Less | Equal | Greater--order :: a -> a -> a -> Ordering -> a-order x _ _ Less = x-order _ y _ Equal = y-order _ _ z Greater = z+import Pandora.Pattern.Object.Setoid (Setoid ((==)), Boolean (True, False))  {- | > When providing a new instance, you should ensure it satisfies the three laws:@@ -28,3 +21,27 @@ 	x > y = order False False True (x <=> y) 	(>=) :: a -> a -> Boolean 	x >= y = order False True True (x <=> y)++data Ordering = Less | Equal | Greater++order :: a -> a -> a -> Ordering -> a+order x _ _ Less = x+order _ y _ Equal = y+order _ _ z Greater = z++instance Setoid Ordering where+	Less == Less = True+	Equal == Equal = True+	Greater == Greater = True+	_ == _ = False++instance Chain Ordering where+	Less <=> Less = Equal+	Less <=> Equal = Less+	Less <=> Greater = Less+	Equal <=> Less = Greater+	Equal <=> Equal = Equal+	Equal <=> Greater = Less+	Greater <=> Less = Greater+	Greater <=> Equal = Greater+	Greater <=> Greater = Equal
Pandora/Pattern/Object/Group.hs view
@@ -1,13 +1,13 @@ module Pandora.Pattern.Object.Group (Group (..)) where -import Pandora.Pattern.Object.Monoid (Monoid)+import Pandora.Pattern.Object.Quasiring (Quasiring)  {- | > When providing a new instance, you should ensure it satisfies the two laws:-> * Right absorption: x + inverse x ≡ zero-> * Left absorption: inverse x + x ≡ zero+> * Right absorption: x * invert x ≡ zero+> * Left absorption: invert x * x ≡ zero -} -class Monoid a => Group a where-	{-# MINIMAL inverse #-}-	inverse :: a -> a+class Quasiring a => Group a where+	{-# MINIMAL invert #-}+	invert :: a -> a
Pandora/Pattern/Object/Ringoid.hs view
@@ -2,6 +2,8 @@  import Pandora.Pattern.Object.Semigroup (Semigroup) +infixl 7 *+ {- | > When providing a new instance, you should ensure it satisfies the two laws: > * Left distributivity: x * (y + z) ≡ x * y + x * z
Pandora/Pattern/Object/Semigroup.hs view
@@ -1,5 +1,7 @@ module Pandora.Pattern.Object.Semigroup (Semigroup (..)) where +infixl 6 ++ {- | > When providing a new instance, you should ensure it satisfies the one law: > * Associativity: x + (y + z) ≡ (x + y) + z
+ Pandora/Pattern/Object/Semiring.hs view
@@ -0,0 +1,10 @@+module Pandora.Pattern.Object.Semiring (Semiring) where++import Pandora.Pattern.Object.Ringoid (Ringoid)++{- |+> When providing a new instance, you should ensure it satisfies one law:+> * Associativity: x * (y * z) ≡ (x * y) * z+-}++class Ringoid a => Semiring a where
Pandora/Pattern/Object/Setoid.hs view
@@ -1,24 +1,30 @@-module Pandora.Pattern.Object.Setoid (Boolean (..), (&&), (||), (?), not, bool, Setoid (..)) where+module Pandora.Pattern.Object.Setoid (Boolean (..), (?), bool, Setoid (..)) where -infixr ||+import Pandora.Pattern.Object.Semigroup (Semigroup ((+)))+import Pandora.Pattern.Object.Ringoid (Ringoid ((*)))+import Pandora.Pattern.Object.Monoid (Monoid (zero))+import Pandora.Pattern.Object.Quasiring (Quasiring (one))+import Pandora.Pattern.Object.Group (Group (invert))+ infixr 1 ?-infixr 3 && infix 4 ==, /= -data Boolean = True | False+{- |+> When providing a new instance, you should ensure it satisfies the four laws:+> * Reflexivity: x == x ≡ True+> * Symmetry: x == y ≡ y == x+> * Transitivity: x == y * y == z ≡ True ===> x == z ≡ True+> * Negation: x /= y ≡ not (x == y)+-} -(&&) :: Boolean -> Boolean -> Boolean-True && True = True-_ && _ = False+class Setoid a where+	{-# MINIMAL (==) #-}+	(==) :: a -> a -> Boolean -(||) :: Boolean -> Boolean -> Boolean-True || _ = True-_ || True = True-_ || _ = False+	(/=) :: a -> a -> Boolean+	(/=) x y = invert (x == y) -not :: Boolean -> Boolean-not True = False-not False = True+data Boolean = True | False  bool :: a -> a -> Boolean -> a bool x _ False = x@@ -28,17 +34,25 @@ (?) True x _ = x (?) False _ y = y -{- |-> When providing a new instance, you should ensure it satisfies the four laws:-> * Reflexivity: x == x ≡ True-> * Symmetry: x == y ≡ y == x-> * Transitivity: x == y && y == z ≡ True ===> x == z ≡ True-> * Negation: x /= y ≡ not (x == y)--}+instance Setoid Boolean where+	True == True = True+	False == False = True+	_ == _ = False -class Setoid a where-	{-# MINIMAL (==) #-}-	(==) :: a -> a -> Boolean+instance Semigroup Boolean where+	False + False = False+	_ + _ = True -	(/=) :: a -> a -> Boolean-	(/=) x y = not (x == y)+instance Ringoid Boolean where+	True * True = True+	_ * _ = False++instance Monoid Boolean where+	zero = False++instance Quasiring Boolean where+	one = True++instance Group Boolean where+	invert False = True+	invert True = False
+ Pandora/Pattern/Transformer.hs view
@@ -0,0 +1,5 @@+module Pandora.Pattern.Transformer (module Exports) where++import Pandora.Pattern.Transformer.Lowerable as Exports+import Pandora.Pattern.Transformer.Liftable as Exports+import Pandora.Pattern.Transformer.Hoistable as Exports
+ Pandora/Pattern/Transformer/Hoistable.hs view
@@ -0,0 +1,6 @@+module Pandora.Pattern.Transformer.Hoistable (Hoistable (..)) where++import Pandora.Core.Functor (type (~>))++class Hoistable t where+	hoist :: u ~> v -> t u ~> t v
+ Pandora/Pattern/Transformer/Liftable.hs view
@@ -0,0 +1,12 @@+module Pandora.Pattern.Transformer.Liftable (Liftable (..)) where++import Pandora.Core.Functor (type (~>))+import Pandora.Pattern.Functor.Pointable (Pointable)++{- |+> When providing a new instance, you should ensure it satisfies one law:+> * Interchange: lift . point ≡ point+-}++class Liftable t where+	lift :: Pointable u => u ~> t u
+ Pandora/Pattern/Transformer/Lowerable.hs view
@@ -0,0 +1,12 @@+module Pandora.Pattern.Transformer.Lowerable (Lowerable (..)) where++import Pandora.Core.Functor (type (~>))+import Pandora.Pattern.Functor.Extractable (Extractable)++{- |+> When providing a new instance, you should ensure it satisfies one law:+> * Interchange: extract . lower ≡ extract+-}++class Lowerable t where+	lower :: Extractable u => t u ~> u
pandora.cabal view
@@ -1,5 +1,5 @@ name:                pandora-version:             0.2.4+version:             0.2.5 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@@ -60,7 +60,7 @@     Pandora.Paradigm.Controlflow.Joint.Adaptable     Pandora.Paradigm.Controlflow.Joint.Schemes     Pandora.Paradigm.Controlflow.Joint.Schemes.TU-    Pandora.Paradigm.Controlflow.Joint.Schemes.TUV+    Pandora.Paradigm.Controlflow.Joint.Schemes.TUT     Pandora.Paradigm.Controlflow.Joint.Schemes.TUVW     Pandora.Paradigm.Controlflow.Joint.Schemes.UT     Pandora.Paradigm.Controlflow.Joint.Schemes.UTU@@ -80,6 +80,7 @@     Pandora.Paradigm.Structure.Cartesian     Pandora.Paradigm.Structure.Nonempty     Pandora.Paradigm.Structure.Specific+    Pandora.Paradigm.Structure.Specific.Stream     Pandora.Paradigm.Structure.Specific.Stack     Pandora.Paradigm.Structure.Specific.Graph     Pandora.Paradigm.Structure.Specific.Binary@@ -102,8 +103,6 @@     Pandora.Pattern.Functor.Extendable     Pandora.Pattern.Functor.Extractable     Pandora.Pattern.Functor.Invariant-    Pandora.Pattern.Functor.Liftable-    Pandora.Pattern.Functor.Lowerable     Pandora.Pattern.Functor.Monad     Pandora.Pattern.Functor.Pointable     Pandora.Pattern.Functor.Representable@@ -120,7 +119,14 @@     Pandora.Pattern.Object.Ringoid     Pandora.Pattern.Object.Semigroup     Pandora.Pattern.Object.Semilattice+    Pandora.Pattern.Object.Semiring     Pandora.Pattern.Object.Setoid+    -- Pandora.Pattern.Object.Property.Boolean+    -- Typeclassess about object composition of functors+    Pandora.Pattern.Transformer+    Pandora.Pattern.Transformer.Hoistable+    Pandora.Pattern.Transformer.Liftable+    Pandora.Pattern.Transformer.Lowerable   default-extensions:     DataKinds, ConstraintKinds, ExistentialQuantification, GADTs, QuantifiedConstraints     FlexibleContexts, FlexibleInstances, KindSignatures, LiberalTypeSynonyms, LambdaCase