pandora 0.1.9 → 0.2.0
raw patch · 36 files changed
+243/−481 lines, 36 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
- Pandora.Paradigm.Basis.Conclusion: instance (Pandora.Pattern.Functor.Pointable.Pointable u, Pandora.Pattern.Functor.Bindable.Bindable u) => Pandora.Pattern.Functor.Bindable.Bindable (Pandora.Pattern.Junction.Schemes.UT.UT (Pandora.Paradigm.Basis.Conclusion.Conclusion e) () (Pandora.Paradigm.Basis.Conclusion.Conclusion e) u)
- Pandora.Paradigm.Basis.Conclusion: instance Pandora.Pattern.Functor.Applicative.Applicative u => Pandora.Pattern.Functor.Applicative.Applicative (Pandora.Pattern.Junction.Schemes.UT.UT (Pandora.Paradigm.Basis.Conclusion.Conclusion e) () (Pandora.Paradigm.Basis.Conclusion.Conclusion e) u)
- Pandora.Paradigm.Basis.Conclusion: instance Pandora.Pattern.Functor.Covariant.Covariant u => Pandora.Pattern.Functor.Covariant.Covariant (Pandora.Pattern.Junction.Schemes.UT.UT (Pandora.Paradigm.Basis.Conclusion.Conclusion e) () (Pandora.Paradigm.Basis.Conclusion.Conclusion e) u)
- Pandora.Paradigm.Basis.Conclusion: instance Pandora.Pattern.Functor.Monad.Monad u => Pandora.Pattern.Functor.Monad.Monad (Pandora.Pattern.Junction.Schemes.UT.UT (Pandora.Paradigm.Basis.Conclusion.Conclusion e) () (Pandora.Paradigm.Basis.Conclusion.Conclusion e) u)
- Pandora.Paradigm.Basis.Conclusion: instance Pandora.Pattern.Functor.Pointable.Pointable u => Pandora.Pattern.Functor.Pointable.Pointable (Pandora.Pattern.Junction.Schemes.UT.UT (Pandora.Paradigm.Basis.Conclusion.Conclusion e) () (Pandora.Paradigm.Basis.Conclusion.Conclusion e) u)
- Pandora.Paradigm.Basis.Maybe: instance (Pandora.Pattern.Functor.Pointable.Pointable u, Pandora.Pattern.Functor.Bindable.Bindable u) => Pandora.Pattern.Functor.Bindable.Bindable (Pandora.Pattern.Junction.Schemes.UT.UT Pandora.Paradigm.Basis.Maybe.Maybe () Pandora.Paradigm.Basis.Maybe.Maybe u)
- Pandora.Paradigm.Basis.Maybe: instance Pandora.Pattern.Functor.Applicative.Applicative u => Pandora.Pattern.Functor.Applicative.Applicative (Pandora.Pattern.Junction.Schemes.UT.UT Pandora.Paradigm.Basis.Maybe.Maybe () Pandora.Paradigm.Basis.Maybe.Maybe u)
- Pandora.Paradigm.Basis.Maybe: instance Pandora.Pattern.Functor.Covariant.Covariant u => Pandora.Pattern.Functor.Covariant.Covariant (Pandora.Pattern.Junction.Schemes.UT.UT Pandora.Paradigm.Basis.Maybe.Maybe () Pandora.Paradigm.Basis.Maybe.Maybe u)
- Pandora.Paradigm.Basis.Maybe: instance Pandora.Pattern.Functor.Monad.Monad u => Pandora.Pattern.Functor.Monad.Monad (Pandora.Pattern.Junction.Schemes.UT.UT Pandora.Paradigm.Basis.Maybe.Maybe () Pandora.Paradigm.Basis.Maybe.Maybe u)
- Pandora.Paradigm.Basis.Maybe: instance Pandora.Pattern.Functor.Pointable.Pointable u => Pandora.Pattern.Functor.Pointable.Pointable (Pandora.Pattern.Junction.Schemes.UT.UT Pandora.Paradigm.Basis.Maybe.Maybe () Pandora.Paradigm.Basis.Maybe.Maybe u)
- Pandora.Paradigm.Inventory.Stateful: instance Pandora.Pattern.Functor.Bindable.Bindable u => Pandora.Pattern.Functor.Applicative.Applicative (Pandora.Pattern.Junction.Schemes.TUV.TUV Pandora.Paradigm.Inventory.Stateful.Stateful () Pandora.Paradigm.Inventory.Stateful.Stateful ((->) s) u ((Pandora.Paradigm.Basis.Product.:*:) s))
- Pandora.Paradigm.Inventory.Stateful: instance Pandora.Pattern.Functor.Bindable.Bindable u => Pandora.Pattern.Functor.Bindable.Bindable (Pandora.Pattern.Junction.Schemes.TUV.TUV Pandora.Paradigm.Inventory.Stateful.Stateful () Pandora.Paradigm.Inventory.Stateful.Stateful ((->) s) u ((Pandora.Paradigm.Basis.Product.:*:) s))
- Pandora.Paradigm.Inventory.Stateful: instance Pandora.Pattern.Functor.Covariant.Covariant u => Pandora.Pattern.Functor.Covariant.Covariant (Pandora.Pattern.Junction.Schemes.TUV.TUV Pandora.Paradigm.Inventory.Stateful.Stateful () Pandora.Paradigm.Inventory.Stateful.Stateful ((->) s) u ((Pandora.Paradigm.Basis.Product.:*:) s))
- Pandora.Paradigm.Inventory.Stateful: instance Pandora.Pattern.Functor.Monad.Monad u => Pandora.Pattern.Functor.Monad.Monad (Pandora.Pattern.Junction.Schemes.TUV.TUV Pandora.Paradigm.Inventory.Stateful.Stateful () Pandora.Paradigm.Inventory.Stateful.Stateful ((->) s) u ((Pandora.Paradigm.Basis.Product.:*:) s))
- Pandora.Paradigm.Inventory.Stateful: instance Pandora.Pattern.Functor.Pointable.Pointable u => Pandora.Pattern.Functor.Pointable.Pointable (Pandora.Pattern.Junction.Schemes.TUV.TUV Pandora.Paradigm.Inventory.Stateful.Stateful () Pandora.Paradigm.Inventory.Stateful.Stateful ((->) s) u ((Pandora.Paradigm.Basis.Product.:*:) s))
- Pandora.Paradigm.Structure.Graph: type Graph a = Edges :.: Twister Edges >< a
- Pandora.Pattern.Junction.Schemes.TU: instance (Pandora.Pattern.Functor.Alternative.Alternative t, Pandora.Pattern.Functor.Covariant.Covariant u) => Pandora.Pattern.Functor.Alternative.Alternative (Pandora.Pattern.Junction.Schemes.TU.TU 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Co t u)
- Pandora.Pattern.Junction.Schemes.TU: instance (Pandora.Pattern.Functor.Applicative.Applicative t, Pandora.Pattern.Functor.Applicative.Applicative u) => Pandora.Pattern.Functor.Applicative.Applicative (Pandora.Pattern.Junction.Schemes.TU.TU 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Co t u)
- Pandora.Pattern.Junction.Schemes.TU: instance (Pandora.Pattern.Functor.Avoidable.Avoidable t, Pandora.Pattern.Functor.Covariant.Covariant u) => Pandora.Pattern.Functor.Avoidable.Avoidable (Pandora.Pattern.Junction.Schemes.TU.TU 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Co t u)
- Pandora.Pattern.Junction.Schemes.TU: instance (Pandora.Pattern.Functor.Contravariant.Contravariant t, Pandora.Pattern.Functor.Contravariant.Contravariant u) => Pandora.Pattern.Functor.Covariant.Covariant (Pandora.Pattern.Junction.Schemes.TU.TU 'Pandora.Core.Functor.Contra 'Pandora.Core.Functor.Contra t u)
- Pandora.Pattern.Junction.Schemes.TU: instance (Pandora.Pattern.Functor.Contravariant.Contravariant t, Pandora.Pattern.Functor.Covariant.Covariant u) => Pandora.Pattern.Functor.Contravariant.Contravariant (Pandora.Pattern.Junction.Schemes.TU.TU 'Pandora.Core.Functor.Contra 'Pandora.Core.Functor.Co t u)
- Pandora.Pattern.Junction.Schemes.TU: instance (Pandora.Pattern.Functor.Covariant.Covariant t, Pandora.Pattern.Functor.Contravariant.Contravariant u) => Pandora.Pattern.Functor.Contravariant.Contravariant (Pandora.Pattern.Junction.Schemes.TU.TU 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Contra t u)
- Pandora.Pattern.Junction.Schemes.TU: instance (Pandora.Pattern.Functor.Covariant.Covariant t, Pandora.Pattern.Functor.Covariant.Covariant u) => Pandora.Pattern.Functor.Covariant.Covariant (Pandora.Pattern.Junction.Schemes.TU.TU 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Co t u)
- Pandora.Pattern.Junction.Schemes.TU: instance (Pandora.Pattern.Functor.Distributive.Distributive t, Pandora.Pattern.Functor.Distributive.Distributive u) => Pandora.Pattern.Functor.Distributive.Distributive (Pandora.Pattern.Junction.Schemes.TU.TU 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Co t u)
- Pandora.Pattern.Junction.Schemes.TU: instance (Pandora.Pattern.Functor.Extractable.Extractable t, Pandora.Pattern.Functor.Extractable.Extractable u) => Pandora.Pattern.Functor.Extractable.Extractable (Pandora.Pattern.Junction.Schemes.TU.TU 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Co t u)
- Pandora.Pattern.Junction.Schemes.TU: instance (Pandora.Pattern.Functor.Pointable.Pointable t, Pandora.Pattern.Functor.Pointable.Pointable u) => Pandora.Pattern.Functor.Pointable.Pointable (Pandora.Pattern.Junction.Schemes.TU.TU 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Co t u)
- Pandora.Pattern.Junction.Schemes.TU: instance (Pandora.Pattern.Functor.Traversable.Traversable t, Pandora.Pattern.Functor.Traversable.Traversable u) => Pandora.Pattern.Functor.Traversable.Traversable (Pandora.Pattern.Junction.Schemes.TU.TU 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Co t u)
- Pandora.Pattern.Junction.Schemes.TU: instance (t Pandora.Pattern.Junction.Schemes.TU.:-|: u, v Pandora.Pattern.Junction.Schemes.TU.:-|: w) => Pandora.Pattern.Functor.Adjoint.Adjoint (Pandora.Pattern.Junction.Schemes.TU.TU 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Co t v) (Pandora.Pattern.Junction.Schemes.TU.TU 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Co u w)
- Pandora.Pattern.Junction.Schemes.TUV: instance (Pandora.Pattern.Functor.Alternative.Alternative t, Pandora.Pattern.Functor.Covariant.Covariant u, Pandora.Pattern.Functor.Covariant.Covariant v) => Pandora.Pattern.Functor.Alternative.Alternative (Pandora.Pattern.Junction.Schemes.TUV.TUV 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Co t u v)
- Pandora.Pattern.Junction.Schemes.TUV: instance (Pandora.Pattern.Functor.Applicative.Applicative t, Pandora.Pattern.Functor.Applicative.Applicative u, Pandora.Pattern.Functor.Applicative.Applicative v) => Pandora.Pattern.Functor.Applicative.Applicative (Pandora.Pattern.Junction.Schemes.TUV.TUV 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Co t u v)
- Pandora.Pattern.Junction.Schemes.TUV: instance (Pandora.Pattern.Functor.Avoidable.Avoidable t, Pandora.Pattern.Functor.Covariant.Covariant u, Pandora.Pattern.Functor.Covariant.Covariant v) => Pandora.Pattern.Functor.Avoidable.Avoidable (Pandora.Pattern.Junction.Schemes.TUV.TUV 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Co t u v)
- Pandora.Pattern.Junction.Schemes.TUV: instance (Pandora.Pattern.Functor.Contravariant.Contravariant t, Pandora.Pattern.Functor.Contravariant.Contravariant u, Pandora.Pattern.Functor.Contravariant.Contravariant v) => Pandora.Pattern.Functor.Contravariant.Contravariant (Pandora.Pattern.Junction.Schemes.TUV.TUV 'Pandora.Core.Functor.Contra 'Pandora.Core.Functor.Contra 'Pandora.Core.Functor.Contra t u v)
- Pandora.Pattern.Junction.Schemes.TUV: instance (Pandora.Pattern.Functor.Contravariant.Contravariant t, Pandora.Pattern.Functor.Contravariant.Contravariant u, Pandora.Pattern.Functor.Covariant.Covariant v) => Pandora.Pattern.Functor.Covariant.Covariant (Pandora.Pattern.Junction.Schemes.TUV.TUV 'Pandora.Core.Functor.Contra 'Pandora.Core.Functor.Contra 'Pandora.Core.Functor.Co t u v)
- Pandora.Pattern.Junction.Schemes.TUV: instance (Pandora.Pattern.Functor.Contravariant.Contravariant t, Pandora.Pattern.Functor.Covariant.Covariant u, Pandora.Pattern.Functor.Contravariant.Contravariant v) => Pandora.Pattern.Functor.Covariant.Covariant (Pandora.Pattern.Junction.Schemes.TUV.TUV 'Pandora.Core.Functor.Contra 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Contra t u v)
- Pandora.Pattern.Junction.Schemes.TUV: instance (Pandora.Pattern.Functor.Contravariant.Contravariant t, Pandora.Pattern.Functor.Covariant.Covariant u, Pandora.Pattern.Functor.Covariant.Covariant v) => Pandora.Pattern.Functor.Contravariant.Contravariant (Pandora.Pattern.Junction.Schemes.TUV.TUV 'Pandora.Core.Functor.Contra 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Co t u v)
- Pandora.Pattern.Junction.Schemes.TUV: instance (Pandora.Pattern.Functor.Covariant.Covariant t, Pandora.Pattern.Functor.Contravariant.Contravariant u, Pandora.Pattern.Functor.Contravariant.Contravariant v) => Pandora.Pattern.Functor.Covariant.Covariant (Pandora.Pattern.Junction.Schemes.TUV.TUV 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Contra 'Pandora.Core.Functor.Contra t u v)
- Pandora.Pattern.Junction.Schemes.TUV: instance (Pandora.Pattern.Functor.Covariant.Covariant t, Pandora.Pattern.Functor.Contravariant.Contravariant u, Pandora.Pattern.Functor.Covariant.Covariant v) => Pandora.Pattern.Functor.Contravariant.Contravariant (Pandora.Pattern.Junction.Schemes.TUV.TUV 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Contra 'Pandora.Core.Functor.Co t u v)
- Pandora.Pattern.Junction.Schemes.TUV: instance (Pandora.Pattern.Functor.Covariant.Covariant t, Pandora.Pattern.Functor.Covariant.Covariant u, Pandora.Pattern.Functor.Contravariant.Contravariant v) => Pandora.Pattern.Functor.Contravariant.Contravariant (Pandora.Pattern.Junction.Schemes.TUV.TUV 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Contra t u v)
- Pandora.Pattern.Junction.Schemes.TUV: instance (Pandora.Pattern.Functor.Covariant.Covariant t, Pandora.Pattern.Functor.Covariant.Covariant u, Pandora.Pattern.Functor.Covariant.Covariant v) => Pandora.Pattern.Functor.Covariant.Covariant (Pandora.Pattern.Junction.Schemes.TUV.TUV 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Co t u v)
- Pandora.Pattern.Junction.Schemes.TUV: instance (Pandora.Pattern.Functor.Distributive.Distributive t, Pandora.Pattern.Functor.Distributive.Distributive u, Pandora.Pattern.Functor.Distributive.Distributive v) => Pandora.Pattern.Functor.Distributive.Distributive (Pandora.Pattern.Junction.Schemes.TUV.TUV 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Co t u v)
- Pandora.Pattern.Junction.Schemes.TUV: instance (Pandora.Pattern.Functor.Extractable.Extractable t, Pandora.Pattern.Functor.Extractable.Extractable u, Pandora.Pattern.Functor.Extractable.Extractable v) => Pandora.Pattern.Functor.Extractable.Extractable (Pandora.Pattern.Junction.Schemes.TUV.TUV 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Co t u v)
- Pandora.Pattern.Junction.Schemes.TUV: instance (Pandora.Pattern.Functor.Pointable.Pointable t, Pandora.Pattern.Functor.Pointable.Pointable u, Pandora.Pattern.Functor.Pointable.Pointable v) => Pandora.Pattern.Functor.Pointable.Pointable (Pandora.Pattern.Junction.Schemes.TUV.TUV 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Co t u v)
- Pandora.Pattern.Junction.Schemes.TUV: instance (Pandora.Pattern.Functor.Traversable.Traversable t, Pandora.Pattern.Functor.Traversable.Traversable u, Pandora.Pattern.Functor.Traversable.Traversable v) => Pandora.Pattern.Functor.Traversable.Traversable (Pandora.Pattern.Junction.Schemes.TUV.TUV 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Co t u v)
- Pandora.Pattern.Junction.Schemes.TUV: instance (t Pandora.Pattern.Junction.Schemes.TUV.:-|: w, v Pandora.Pattern.Junction.Schemes.TUV.:-|: x, u Pandora.Pattern.Junction.Schemes.TUV.:-|: y) => Pandora.Pattern.Functor.Adjoint.Adjoint (Pandora.Pattern.Junction.Schemes.TUV.TUV 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Co t v u) (Pandora.Pattern.Junction.Schemes.TUV.TUV 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Co w x y)
- Pandora.Pattern.Junction.Schemes.TUVW: instance (Pandora.Pattern.Functor.Alternative.Alternative t, Pandora.Pattern.Functor.Covariant.Covariant u, Pandora.Pattern.Functor.Covariant.Covariant v, Pandora.Pattern.Functor.Covariant.Covariant w) => Pandora.Pattern.Functor.Alternative.Alternative (Pandora.Pattern.Junction.Schemes.TUVW.TUVW 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Co t u v w)
- Pandora.Pattern.Junction.Schemes.TUVW: instance (Pandora.Pattern.Functor.Applicative.Applicative t, Pandora.Pattern.Functor.Applicative.Applicative u, Pandora.Pattern.Functor.Applicative.Applicative v, Pandora.Pattern.Functor.Applicative.Applicative w) => Pandora.Pattern.Functor.Applicative.Applicative (Pandora.Pattern.Junction.Schemes.TUVW.TUVW 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Co t u v w)
- Pandora.Pattern.Junction.Schemes.TUVW: instance (Pandora.Pattern.Functor.Avoidable.Avoidable t, Pandora.Pattern.Functor.Covariant.Covariant u, Pandora.Pattern.Functor.Covariant.Covariant v, Pandora.Pattern.Functor.Covariant.Covariant w) => Pandora.Pattern.Functor.Avoidable.Avoidable (Pandora.Pattern.Junction.Schemes.TUVW.TUVW 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Co t u v w)
- Pandora.Pattern.Junction.Schemes.TUVW: instance (Pandora.Pattern.Functor.Contravariant.Contravariant t, Pandora.Pattern.Functor.Contravariant.Contravariant u, Pandora.Pattern.Functor.Contravariant.Contravariant v, Pandora.Pattern.Functor.Contravariant.Contravariant w) => Pandora.Pattern.Functor.Covariant.Covariant (Pandora.Pattern.Junction.Schemes.TUVW.TUVW 'Pandora.Core.Functor.Contra 'Pandora.Core.Functor.Contra 'Pandora.Core.Functor.Contra 'Pandora.Core.Functor.Contra t u v w)
- Pandora.Pattern.Junction.Schemes.TUVW: instance (Pandora.Pattern.Functor.Contravariant.Contravariant t, Pandora.Pattern.Functor.Contravariant.Contravariant u, Pandora.Pattern.Functor.Contravariant.Contravariant v, Pandora.Pattern.Functor.Covariant.Covariant w) => Pandora.Pattern.Functor.Contravariant.Contravariant (Pandora.Pattern.Junction.Schemes.TUVW.TUVW 'Pandora.Core.Functor.Contra 'Pandora.Core.Functor.Contra 'Pandora.Core.Functor.Contra 'Pandora.Core.Functor.Co t u v w)
- Pandora.Pattern.Junction.Schemes.TUVW: instance (Pandora.Pattern.Functor.Contravariant.Contravariant t, Pandora.Pattern.Functor.Contravariant.Contravariant u, Pandora.Pattern.Functor.Covariant.Covariant v, Pandora.Pattern.Functor.Contravariant.Contravariant w) => Pandora.Pattern.Functor.Contravariant.Contravariant (Pandora.Pattern.Junction.Schemes.TUVW.TUVW 'Pandora.Core.Functor.Contra 'Pandora.Core.Functor.Contra 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Contra t u v w)
- Pandora.Pattern.Junction.Schemes.TUVW: instance (Pandora.Pattern.Functor.Contravariant.Contravariant t, Pandora.Pattern.Functor.Contravariant.Contravariant u, Pandora.Pattern.Functor.Covariant.Covariant v, Pandora.Pattern.Functor.Covariant.Covariant w) => Pandora.Pattern.Functor.Covariant.Covariant (Pandora.Pattern.Junction.Schemes.TUVW.TUVW 'Pandora.Core.Functor.Contra 'Pandora.Core.Functor.Contra 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Co t u v w)
- Pandora.Pattern.Junction.Schemes.TUVW: instance (Pandora.Pattern.Functor.Contravariant.Contravariant t, Pandora.Pattern.Functor.Covariant.Covariant u, Pandora.Pattern.Functor.Contravariant.Contravariant v, Pandora.Pattern.Functor.Contravariant.Contravariant w) => Pandora.Pattern.Functor.Contravariant.Contravariant (Pandora.Pattern.Junction.Schemes.TUVW.TUVW 'Pandora.Core.Functor.Contra 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Contra 'Pandora.Core.Functor.Contra t u v w)
- Pandora.Pattern.Junction.Schemes.TUVW: instance (Pandora.Pattern.Functor.Contravariant.Contravariant t, Pandora.Pattern.Functor.Covariant.Covariant u, Pandora.Pattern.Functor.Contravariant.Contravariant v, Pandora.Pattern.Functor.Covariant.Covariant w) => Pandora.Pattern.Functor.Covariant.Covariant (Pandora.Pattern.Junction.Schemes.TUVW.TUVW 'Pandora.Core.Functor.Contra 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Contra 'Pandora.Core.Functor.Co t u v w)
- Pandora.Pattern.Junction.Schemes.TUVW: instance (Pandora.Pattern.Functor.Contravariant.Contravariant t, Pandora.Pattern.Functor.Covariant.Covariant u, Pandora.Pattern.Functor.Covariant.Covariant v, Pandora.Pattern.Functor.Contravariant.Contravariant w) => Pandora.Pattern.Functor.Covariant.Covariant (Pandora.Pattern.Junction.Schemes.TUVW.TUVW 'Pandora.Core.Functor.Contra 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Contra t u v w)
- Pandora.Pattern.Junction.Schemes.TUVW: instance (Pandora.Pattern.Functor.Contravariant.Contravariant t, Pandora.Pattern.Functor.Covariant.Covariant u, Pandora.Pattern.Functor.Covariant.Covariant v, Pandora.Pattern.Functor.Covariant.Covariant w) => Pandora.Pattern.Functor.Contravariant.Contravariant (Pandora.Pattern.Junction.Schemes.TUVW.TUVW 'Pandora.Core.Functor.Contra 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Co t u v w)
- Pandora.Pattern.Junction.Schemes.TUVW: instance (Pandora.Pattern.Functor.Covariant.Covariant t, Pandora.Pattern.Functor.Contravariant.Contravariant u, Pandora.Pattern.Functor.Contravariant.Contravariant v, Pandora.Pattern.Functor.Contravariant.Contravariant w) => Pandora.Pattern.Functor.Contravariant.Contravariant (Pandora.Pattern.Junction.Schemes.TUVW.TUVW 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Contra 'Pandora.Core.Functor.Contra 'Pandora.Core.Functor.Contra t u v w)
- Pandora.Pattern.Junction.Schemes.TUVW: instance (Pandora.Pattern.Functor.Covariant.Covariant t, Pandora.Pattern.Functor.Contravariant.Contravariant u, Pandora.Pattern.Functor.Contravariant.Contravariant v, Pandora.Pattern.Functor.Covariant.Covariant w) => Pandora.Pattern.Functor.Covariant.Covariant (Pandora.Pattern.Junction.Schemes.TUVW.TUVW 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Contra 'Pandora.Core.Functor.Contra 'Pandora.Core.Functor.Co t u v w)
- Pandora.Pattern.Junction.Schemes.TUVW: instance (Pandora.Pattern.Functor.Covariant.Covariant t, Pandora.Pattern.Functor.Contravariant.Contravariant u, Pandora.Pattern.Functor.Covariant.Covariant v, Pandora.Pattern.Functor.Contravariant.Contravariant w) => Pandora.Pattern.Functor.Covariant.Covariant (Pandora.Pattern.Junction.Schemes.TUVW.TUVW 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Contra 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Contra t u v w)
- Pandora.Pattern.Junction.Schemes.TUVW: instance (Pandora.Pattern.Functor.Covariant.Covariant t, Pandora.Pattern.Functor.Contravariant.Contravariant u, Pandora.Pattern.Functor.Covariant.Covariant v, Pandora.Pattern.Functor.Covariant.Covariant w) => Pandora.Pattern.Functor.Contravariant.Contravariant (Pandora.Pattern.Junction.Schemes.TUVW.TUVW 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Contra 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Co t u v w)
- Pandora.Pattern.Junction.Schemes.TUVW: instance (Pandora.Pattern.Functor.Covariant.Covariant t, Pandora.Pattern.Functor.Covariant.Covariant u, Pandora.Pattern.Functor.Contravariant.Contravariant v, Pandora.Pattern.Functor.Contravariant.Contravariant w) => Pandora.Pattern.Functor.Covariant.Covariant (Pandora.Pattern.Junction.Schemes.TUVW.TUVW 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Contra 'Pandora.Core.Functor.Contra t u v w)
- Pandora.Pattern.Junction.Schemes.TUVW: instance (Pandora.Pattern.Functor.Covariant.Covariant t, Pandora.Pattern.Functor.Covariant.Covariant u, Pandora.Pattern.Functor.Contravariant.Contravariant v, Pandora.Pattern.Functor.Covariant.Covariant w) => Pandora.Pattern.Functor.Contravariant.Contravariant (Pandora.Pattern.Junction.Schemes.TUVW.TUVW 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Contra 'Pandora.Core.Functor.Co t u v w)
- Pandora.Pattern.Junction.Schemes.TUVW: instance (Pandora.Pattern.Functor.Covariant.Covariant t, Pandora.Pattern.Functor.Covariant.Covariant u, Pandora.Pattern.Functor.Covariant.Covariant v, Pandora.Pattern.Functor.Contravariant.Contravariant w) => Pandora.Pattern.Functor.Contravariant.Contravariant (Pandora.Pattern.Junction.Schemes.TUVW.TUVW 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Contra t u v w)
- Pandora.Pattern.Junction.Schemes.TUVW: instance (Pandora.Pattern.Functor.Covariant.Covariant t, Pandora.Pattern.Functor.Covariant.Covariant u, Pandora.Pattern.Functor.Covariant.Covariant v, Pandora.Pattern.Functor.Covariant.Covariant w) => Pandora.Pattern.Functor.Covariant.Covariant (Pandora.Pattern.Junction.Schemes.TUVW.TUVW 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Co t u v w)
- Pandora.Pattern.Junction.Schemes.TUVW: instance (Pandora.Pattern.Functor.Distributive.Distributive t, Pandora.Pattern.Functor.Distributive.Distributive u, Pandora.Pattern.Functor.Distributive.Distributive v, Pandora.Pattern.Functor.Distributive.Distributive w) => Pandora.Pattern.Functor.Distributive.Distributive (Pandora.Pattern.Junction.Schemes.TUVW.TUVW 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Co t u v w)
- Pandora.Pattern.Junction.Schemes.TUVW: instance (Pandora.Pattern.Functor.Extractable.Extractable t, Pandora.Pattern.Functor.Extractable.Extractable u, Pandora.Pattern.Functor.Extractable.Extractable v, Pandora.Pattern.Functor.Extractable.Extractable w) => Pandora.Pattern.Functor.Extractable.Extractable (Pandora.Pattern.Junction.Schemes.TUVW.TUVW 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Co t u v w)
- Pandora.Pattern.Junction.Schemes.TUVW: instance (Pandora.Pattern.Functor.Pointable.Pointable t, Pandora.Pattern.Functor.Pointable.Pointable u, Pandora.Pattern.Functor.Pointable.Pointable v, Pandora.Pattern.Functor.Pointable.Pointable w) => Pandora.Pattern.Functor.Pointable.Pointable (Pandora.Pattern.Junction.Schemes.TUVW.TUVW 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Co t u v w)
- Pandora.Pattern.Junction.Schemes.TUVW: instance (Pandora.Pattern.Functor.Traversable.Traversable t, Pandora.Pattern.Functor.Traversable.Traversable u, Pandora.Pattern.Functor.Traversable.Traversable v, Pandora.Pattern.Functor.Traversable.Traversable w) => Pandora.Pattern.Functor.Traversable.Traversable (Pandora.Pattern.Junction.Schemes.TUVW.TUVW 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Co t u v w)
- Pandora.Pattern.Junction.Schemes.TUVW: instance (t Pandora.Pattern.Junction.Schemes.TUVW.:-|: u, v Pandora.Pattern.Junction.Schemes.TUVW.:-|: w, q Pandora.Pattern.Junction.Schemes.TUVW.:-|: q, r Pandora.Pattern.Junction.Schemes.TUVW.:-|: s) => Pandora.Pattern.Functor.Adjoint.Adjoint (Pandora.Pattern.Junction.Schemes.TUVW.TUVW 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Co t v q r) (Pandora.Pattern.Junction.Schemes.TUVW.TUVW 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Co u w q s)
- Pandora.Pattern.Junction.Schemes.UT: instance (Pandora.Pattern.Functor.Applicative.Applicative t, Pandora.Pattern.Functor.Applicative.Applicative u) => Pandora.Pattern.Functor.Applicative.Applicative (Pandora.Pattern.Junction.Schemes.UT.UT 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Co t u)
- Pandora.Pattern.Junction.Schemes.UT: instance (Pandora.Pattern.Functor.Covariant.Covariant t, Pandora.Pattern.Functor.Alternative.Alternative u) => Pandora.Pattern.Functor.Alternative.Alternative (Pandora.Pattern.Junction.Schemes.UT.UT 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Co t u)
- Pandora.Pattern.Junction.Schemes.UT: instance (Pandora.Pattern.Functor.Covariant.Covariant t, Pandora.Pattern.Functor.Avoidable.Avoidable u) => Pandora.Pattern.Functor.Avoidable.Avoidable (Pandora.Pattern.Junction.Schemes.UT.UT 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Co t u)
- Pandora.Pattern.Junction.Schemes.UT: instance (Pandora.Pattern.Functor.Covariant.Covariant t, Pandora.Pattern.Functor.Covariant.Covariant u) => Pandora.Pattern.Functor.Covariant.Covariant (Pandora.Pattern.Junction.Schemes.UT.UT 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Co t u)
- Pandora.Pattern.Junction.Schemes.UT: instance (Pandora.Pattern.Functor.Distributive.Distributive t, Pandora.Pattern.Functor.Distributive.Distributive u) => Pandora.Pattern.Functor.Distributive.Distributive (Pandora.Pattern.Junction.Schemes.UT.UT 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Co t u)
- Pandora.Pattern.Junction.Schemes.UT: instance (Pandora.Pattern.Functor.Extractable.Extractable t, Pandora.Pattern.Functor.Extractable.Extractable u) => Pandora.Pattern.Functor.Extractable.Extractable (Pandora.Pattern.Junction.Schemes.UT.UT 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Co t u)
- Pandora.Pattern.Junction.Schemes.UT: instance (Pandora.Pattern.Functor.Pointable.Pointable t, Pandora.Pattern.Functor.Pointable.Pointable u) => Pandora.Pattern.Functor.Pointable.Pointable (Pandora.Pattern.Junction.Schemes.UT.UT 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Co t u)
- Pandora.Pattern.Junction.Schemes.UT: instance (Pandora.Pattern.Functor.Traversable.Traversable t, Pandora.Pattern.Functor.Traversable.Traversable u) => Pandora.Pattern.Functor.Traversable.Traversable (Pandora.Pattern.Junction.Schemes.UT.UT 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Co t u)
- Pandora.Pattern.Junction.Schemes.UT: instance Pandora.Pattern.Functor.Extractable.Extractable t => Pandora.Pattern.Functor.Lowerable.Lowerable (Pandora.Pattern.Junction.Schemes.UT.UT 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Co t)
- Pandora.Pattern.Junction.Schemes.UT: instance Pandora.Pattern.Functor.Pointable.Pointable t => Pandora.Pattern.Functor.Liftable.Liftable (Pandora.Pattern.Junction.Schemes.UT.UT 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Co t)
- Pandora.Pattern.Junction.Schemes.UT: instance forall k1 k2 (u :: k2 -> *) (t :: k1 -> k2) (a :: k1). Pandora.Pattern.Object.Chain.Chain ((u Pandora.Core.Functor.:.: t) Pandora.Core.Functor.>< a) => Pandora.Pattern.Object.Chain.Chain (Pandora.Pattern.Junction.Schemes.UT.UT 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Co t u a)
- Pandora.Pattern.Junction.Schemes.UT: instance forall k1 k2 (u :: k2 -> *) (t :: k1 -> k2) (a :: k1). Pandora.Pattern.Object.Monoid.Monoid ((u Pandora.Core.Functor.:.: t) Pandora.Core.Functor.>< a) => Pandora.Pattern.Object.Monoid.Monoid (Pandora.Pattern.Junction.Schemes.UT.UT 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Co t u a)
- Pandora.Pattern.Junction.Schemes.UT: instance forall k1 k2 (u :: k2 -> *) (t :: k1 -> k2) (a :: k1). Pandora.Pattern.Object.Semigroup.Semigroup ((u Pandora.Core.Functor.:.: t) Pandora.Core.Functor.>< a) => Pandora.Pattern.Object.Semigroup.Semigroup (Pandora.Pattern.Junction.Schemes.UT.UT 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Co t u a)
- Pandora.Pattern.Junction.Schemes.UT: instance forall k1 k2 (u :: k2 -> *) (t :: k1 -> k2) (a :: k1). Pandora.Pattern.Object.Setoid.Setoid ((u Pandora.Core.Functor.:.: t) Pandora.Core.Functor.>< a) => Pandora.Pattern.Object.Setoid.Setoid (Pandora.Pattern.Junction.Schemes.UT.UT 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Co t u a)
- Pandora.Pattern.Junction.Schemes.UTU: instance (Pandora.Pattern.Functor.Applicative.Applicative (t u), Pandora.Pattern.Functor.Applicative.Applicative u) => Pandora.Pattern.Functor.Applicative.Applicative (Pandora.Pattern.Junction.Schemes.UTU.UTU 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Co t u)
- Pandora.Pattern.Junction.Schemes.UTU: instance (Pandora.Pattern.Functor.Covariant.Covariant (t u), Pandora.Pattern.Functor.Alternative.Alternative u) => Pandora.Pattern.Functor.Alternative.Alternative (Pandora.Pattern.Junction.Schemes.UTU.UTU 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Co t u)
- Pandora.Pattern.Junction.Schemes.UTU: instance (Pandora.Pattern.Functor.Covariant.Covariant (t u), Pandora.Pattern.Functor.Avoidable.Avoidable u) => Pandora.Pattern.Functor.Avoidable.Avoidable (Pandora.Pattern.Junction.Schemes.UTU.UTU 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Co t u)
- Pandora.Pattern.Junction.Schemes.UTU: instance (Pandora.Pattern.Functor.Covariant.Covariant (t u), Pandora.Pattern.Functor.Covariant.Covariant u) => Pandora.Pattern.Functor.Covariant.Covariant (Pandora.Pattern.Junction.Schemes.UTU.UTU 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Co t u)
- Pandora.Pattern.Junction.Schemes.UTU: instance (Pandora.Pattern.Functor.Distributive.Distributive (t u), Pandora.Pattern.Functor.Distributive.Distributive u) => Pandora.Pattern.Functor.Distributive.Distributive (Pandora.Pattern.Junction.Schemes.UTU.UTU 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Co t u)
- Pandora.Pattern.Junction.Schemes.UTU: instance (Pandora.Pattern.Functor.Extractable.Extractable (t u), Pandora.Pattern.Functor.Extractable.Extractable u) => Pandora.Pattern.Functor.Extractable.Extractable (Pandora.Pattern.Junction.Schemes.UTU.UTU 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Co t u)
- Pandora.Pattern.Junction.Schemes.UTU: instance (Pandora.Pattern.Functor.Pointable.Pointable (t u), Pandora.Pattern.Functor.Pointable.Pointable u) => Pandora.Pattern.Functor.Pointable.Pointable (Pandora.Pattern.Junction.Schemes.UTU.UTU 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Co t u)
- Pandora.Pattern.Junction.Schemes.UTU: instance (Pandora.Pattern.Functor.Traversable.Traversable (t u), Pandora.Pattern.Functor.Traversable.Traversable u) => Pandora.Pattern.Functor.Traversable.Traversable (Pandora.Pattern.Junction.Schemes.UTU.UTU 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Co t u)
- Pandora.Pattern.Junction.Schemes.UTU: instance (forall (u' :: * -> *). Pandora.Pattern.Functor.Extractable.Extractable u', Pandora.Pattern.Functor.Lowerable.Lowerable t) => Pandora.Pattern.Functor.Lowerable.Lowerable (Pandora.Pattern.Junction.Schemes.UTU.UTU 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Co t)
- Pandora.Pattern.Junction.Schemes.UTU: instance (forall (u' :: * -> *). Pandora.Pattern.Functor.Pointable.Pointable u', Pandora.Pattern.Functor.Liftable.Liftable t) => Pandora.Pattern.Functor.Liftable.Liftable (Pandora.Pattern.Junction.Schemes.UTU.UTU 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Co t)
- Pandora.Pattern.Junction.Schemes.UTU: instance forall k1 k2 (t :: (k2 -> *) -> k1 -> k2) (a :: k1) (u :: k2 -> *). (forall (u' :: k2 -> *). Pandora.Pattern.Object.Chain.Chain ((u' Pandora.Core.Functor.:.: t u') Pandora.Core.Functor.>< a)) => Pandora.Pattern.Object.Chain.Chain (Pandora.Pattern.Junction.Schemes.UTU.UTU 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Co t u a)
- Pandora.Pattern.Junction.Schemes.UTU: instance forall k1 k2 (t :: (k2 -> *) -> k1 -> k2) (a :: k1) (u :: k2 -> *). (forall (u' :: k2 -> *). Pandora.Pattern.Object.Monoid.Monoid ((u' Pandora.Core.Functor.:.: t u') Pandora.Core.Functor.>< a)) => Pandora.Pattern.Object.Monoid.Monoid (Pandora.Pattern.Junction.Schemes.UTU.UTU 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Co t u a)
- Pandora.Pattern.Junction.Schemes.UTU: instance forall k1 k2 (t :: (k2 -> *) -> k1 -> k2) (a :: k1) (u :: k2 -> *). (forall (u' :: k2 -> *). Pandora.Pattern.Object.Semigroup.Semigroup ((u' Pandora.Core.Functor.:.: t u') Pandora.Core.Functor.>< a)) => Pandora.Pattern.Object.Semigroup.Semigroup (Pandora.Pattern.Junction.Schemes.UTU.UTU 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Co t u a)
- Pandora.Pattern.Junction.Schemes.UTU: instance forall k1 k2 (t :: (k2 -> *) -> k1 -> k2) (a :: k1) (u :: k2 -> *). (forall (u' :: k2 -> *). Pandora.Pattern.Object.Setoid.Setoid ((u' Pandora.Core.Functor.:.: t u') Pandora.Core.Functor.>< a)) => Pandora.Pattern.Object.Setoid.Setoid (Pandora.Pattern.Junction.Schemes.UTU.UTU 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Co t u a)
+ Pandora.Core.Functor: infixr 2 ::|::
+ Pandora.Paradigm.Basis.Conclusion: instance (Pandora.Pattern.Functor.Pointable.Pointable u, Pandora.Pattern.Functor.Bindable.Bindable u) => Pandora.Pattern.Functor.Bindable.Bindable (Pandora.Pattern.Junction.Schemes.UT.UT 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Co (Pandora.Paradigm.Basis.Conclusion.Conclusion e) u)
+ Pandora.Paradigm.Basis.Conclusion: instance Pandora.Pattern.Functor.Applicative.Applicative u => Pandora.Pattern.Functor.Applicative.Applicative (Pandora.Pattern.Junction.Schemes.UT.UT 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Co (Pandora.Paradigm.Basis.Conclusion.Conclusion e) u)
+ Pandora.Paradigm.Basis.Conclusion: instance Pandora.Pattern.Functor.Covariant.Covariant u => Pandora.Pattern.Functor.Covariant.Covariant (Pandora.Pattern.Junction.Schemes.UT.UT 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Co (Pandora.Paradigm.Basis.Conclusion.Conclusion e) u)
+ Pandora.Paradigm.Basis.Conclusion: instance Pandora.Pattern.Functor.Monad.Monad u => Pandora.Pattern.Functor.Monad.Monad (Pandora.Pattern.Junction.Schemes.UT.UT 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Co (Pandora.Paradigm.Basis.Conclusion.Conclusion e) u)
+ Pandora.Paradigm.Basis.Conclusion: instance Pandora.Pattern.Functor.Pointable.Pointable u => Pandora.Pattern.Functor.Pointable.Pointable (Pandora.Pattern.Junction.Schemes.UT.UT 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Co (Pandora.Paradigm.Basis.Conclusion.Conclusion e) u)
+ Pandora.Paradigm.Basis.Maybe: instance (Pandora.Pattern.Functor.Pointable.Pointable u, Pandora.Pattern.Functor.Bindable.Bindable u) => Pandora.Pattern.Functor.Bindable.Bindable (Pandora.Pattern.Junction.Schemes.UT.UT 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Co Pandora.Paradigm.Basis.Maybe.Maybe u)
+ Pandora.Paradigm.Basis.Maybe: instance Pandora.Pattern.Functor.Applicative.Applicative u => Pandora.Pattern.Functor.Applicative.Applicative (Pandora.Pattern.Junction.Schemes.UT.UT 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Co Pandora.Paradigm.Basis.Maybe.Maybe u)
+ Pandora.Paradigm.Basis.Maybe: instance Pandora.Pattern.Functor.Covariant.Covariant u => Pandora.Pattern.Functor.Covariant.Covariant (Pandora.Pattern.Junction.Schemes.UT.UT 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Co Pandora.Paradigm.Basis.Maybe.Maybe u)
+ Pandora.Paradigm.Basis.Maybe: instance Pandora.Pattern.Functor.Monad.Monad u => Pandora.Pattern.Functor.Monad.Monad (Pandora.Pattern.Junction.Schemes.UT.UT 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Co Pandora.Paradigm.Basis.Maybe.Maybe u)
+ Pandora.Paradigm.Basis.Maybe: instance Pandora.Pattern.Functor.Pointable.Pointable u => Pandora.Pattern.Functor.Pointable.Pointable (Pandora.Pattern.Junction.Schemes.UT.UT 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Co Pandora.Paradigm.Basis.Maybe.Maybe u)
+ Pandora.Paradigm.Inventory.Optics: instance Pandora.Pattern.Functor.Adjoint.Adjoint (Pandora.Paradigm.Inventory.Storage.Storage s) (Pandora.Paradigm.Inventory.Stateful.Stateful s)
+ Pandora.Paradigm.Inventory.Stateful: instance Pandora.Pattern.Functor.Bindable.Bindable u => Pandora.Pattern.Functor.Applicative.Applicative (Pandora.Pattern.Junction.Schemes.TUV.TUV 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Co ((->) s) u ((Pandora.Paradigm.Basis.Product.:*:) s))
+ Pandora.Paradigm.Inventory.Stateful: instance Pandora.Pattern.Functor.Bindable.Bindable u => Pandora.Pattern.Functor.Bindable.Bindable (Pandora.Pattern.Junction.Schemes.TUV.TUV 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Co ((->) s) u ((Pandora.Paradigm.Basis.Product.:*:) s))
+ Pandora.Paradigm.Inventory.Stateful: instance Pandora.Pattern.Functor.Covariant.Covariant u => Pandora.Pattern.Functor.Covariant.Covariant (Pandora.Pattern.Junction.Schemes.TUV.TUV 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Co ((->) s) u ((Pandora.Paradigm.Basis.Product.:*:) s))
+ Pandora.Paradigm.Inventory.Stateful: instance Pandora.Pattern.Functor.Monad.Monad u => Pandora.Pattern.Functor.Monad.Monad (Pandora.Pattern.Junction.Schemes.TUV.TUV 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Co ((->) s) u ((Pandora.Paradigm.Basis.Product.:*:) s))
+ Pandora.Paradigm.Inventory.Stateful: instance Pandora.Pattern.Functor.Pointable.Pointable u => Pandora.Pattern.Functor.Pointable.Pointable (Pandora.Pattern.Junction.Schemes.TUV.TUV 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Co 'Pandora.Core.Functor.Co ((->) s) u ((Pandora.Paradigm.Basis.Product.:*:) s))
+ Pandora.Paradigm.Structure.Graph: data Graph a
+ Pandora.Paradigm.Structure.Graph: instance Pandora.Pattern.Functor.Covariant.Covariant Pandora.Paradigm.Structure.Graph.Graph
+ Pandora.Paradigm.Structure.Graph: instance Pandora.Pattern.Functor.Traversable.Traversable Pandora.Paradigm.Structure.Graph.Graph
+ Pandora.Paradigm.Structure.Graph: instance Pandora.Pattern.Junction.Composition.Composition Pandora.Paradigm.Structure.Graph.Graph
+ Pandora.Pattern.Functor.Adjoint: (-|) :: Adjoint t u => a -> (t a -> b) -> u b
+ Pandora.Pattern.Functor.Adjoint: (|-) :: Adjoint t u => t a -> (a -> u b) -> b
+ Pandora.Pattern.Functor.Adjoint: infixl 4 -|
+ Pandora.Pattern.Functor.Applicative: instance Pandora.Pattern.Functor.Applicative.Applicative ((->) e)
+ Pandora.Pattern.Functor.Bindable: instance Pandora.Pattern.Functor.Bindable.Bindable ((->) e)
+ Pandora.Pattern.Functor.Divariant: (>->) :: Divariant t => (a -> b) -> (c -> d) -> t b c -> t a d
+ Pandora.Pattern.Functor.Divariant: class (forall a. Covariant (t a)) => Divariant (t :: * -> * -> *)
+ Pandora.Pattern.Functor.Divariant: dimap :: Divariant t => (a -> b) -> (c -> d) -> t b c -> t a d
+ Pandora.Pattern.Functor.Divariant: infixl 4 >->
+ Pandora.Pattern.Functor.Divariant: instance Pandora.Pattern.Functor.Divariant.Divariant (->)
+ Pandora.Pattern.Functor.Pointable: instance Pandora.Pattern.Functor.Pointable.Pointable ((->) e)
+ Pandora.Pattern.Functor.Representable: (<#>) :: Representable t => Representation t -> t a -> a
+ Pandora.Pattern.Functor.Representable: class Pointable t => Representable t where {
+ Pandora.Pattern.Functor.Representable: index :: Representable t => t a -> Representation t -> a
+ Pandora.Pattern.Functor.Representable: instance Pandora.Pattern.Functor.Representable.Representable ((->) e)
+ Pandora.Pattern.Functor.Representable: tabulate :: Representable t => (Representation t -> a) -> t a
+ Pandora.Pattern.Functor.Representable: type family Representation t :: *;
+ Pandora.Pattern.Functor.Representable: }
- Pandora.Core.Functor: infixr 0 ><
+ Pandora.Core.Functor: infixr 0 >
- Pandora.Core.Functor: infixr 1 .:.
+ Pandora.Core.Functor: infixr 1 .:
- Pandora.Core.Functor: type (><) t a = t a
+ Pandora.Core.Functor: type (::|::) p a b = p (p a b) (p a b)
- Pandora.Paradigm.Basis.Continuation: Continuation :: ((a -> t r) -> t r) -> Continuation r t a
+ Pandora.Paradigm.Basis.Continuation: Continuation :: ((((->) ::|:. a) :. t) > r) -> Continuation r t a
- Pandora.Paradigm.Basis.Continuation: [continue] :: Continuation r t a -> (a -> t r) -> t r
+ Pandora.Paradigm.Basis.Continuation: [continue] :: Continuation r t a -> (((->) ::|:. a) :. t) > r
- Pandora.Paradigm.Basis.Free: Impure :: ((t :.: Free t) >< a) -> Free t a
+ Pandora.Paradigm.Basis.Free: Impure :: ((t :. Free t) > a) -> Free t a
- Pandora.Paradigm.Basis.Twister: (:<) :: a -> ((t :.: Twister t) >< a) -> Twister t a
+ Pandora.Paradigm.Basis.Twister: (:<) :: a -> ((t :. Twister t) > a) -> Twister t a
- Pandora.Paradigm.Basis.Twister: untwist :: Twister t a -> (t :.: Twister t) a
+ Pandora.Paradigm.Basis.Twister: untwist :: Twister t a -> (t :. Twister t) a
- Pandora.Paradigm.Inventory.Stateful: Stateful :: (((->) s :.: (:*:) s) >< a) -> Stateful s a
+ Pandora.Paradigm.Inventory.Stateful: Stateful :: (((->) s :. (:*:) s) > a) -> Stateful s a
- Pandora.Paradigm.Inventory.Storage: Storage :: (((:*:) p :.: (->) p) >< a) -> Storage p a
+ Pandora.Paradigm.Inventory.Storage: Storage :: (((:*:) p :. (->) p) > a) -> Storage p a
- Pandora.Paradigm.Inventory.Storage: [stored] :: Storage p a -> ((:*:) p :.: (->) p) >< a
+ Pandora.Paradigm.Inventory.Storage: [stored] :: Storage p a -> ((:*:) p :. (->) p) > a
- Pandora.Pattern.Functor.Adjoint: epsilon :: Adjoint t u => ((t :.: u) >< a) -> a
+ Pandora.Pattern.Functor.Adjoint: epsilon :: Adjoint t u => ((t :. u) > a) -> a
- Pandora.Pattern.Functor.Adjoint: eta :: Adjoint t u => a -> (u :.: t) >< a
+ Pandora.Pattern.Functor.Adjoint: eta :: Adjoint t u => a -> (u :. t) > a
- Pandora.Pattern.Functor.Applicative: (<****>) :: (Applicative t, Applicative u, Applicative v, Applicative w) => ((t :.: (u :.: (v :.: w))) >< (a -> b)) -> ((t :.: (u :.: (v :.: w))) >< a) -> (t :.: (u :.: (v :.: w))) >< b
+ Pandora.Pattern.Functor.Applicative: (<****>) :: (Applicative t, Applicative u, Applicative v, Applicative w) => ((t :. (u :. (v :. w))) > (a -> b)) -> ((t :. (u :. (v :. w))) > a) -> (t :. (u :. (v :. w))) > b
- Pandora.Pattern.Functor.Applicative: (<***>) :: (Applicative t, Applicative u, Applicative v) => ((t :.: (u :.: v)) >< (a -> b)) -> ((t :.: (u :.: v)) >< a) -> (t :.: (u :.: v)) >< b
+ Pandora.Pattern.Functor.Applicative: (<***>) :: (Applicative t, Applicative u, Applicative v) => ((t :. (u :. v)) > (a -> b)) -> ((t :. (u :. v)) > a) -> (t :. (u :. v)) > b
- Pandora.Pattern.Functor.Applicative: (<**>) :: (Applicative t, Applicative u) => ((t :.: u) >< (a -> b)) -> ((t :.: u) >< a) -> (t :.: u) >< b
+ Pandora.Pattern.Functor.Applicative: (<**>) :: (Applicative t, Applicative u) => ((t :. u) > (a -> b)) -> ((t :. u) > a) -> (t :. u) > b
- Pandora.Pattern.Functor.Bindable: join :: Bindable t => ((t :.: t) >< a) -> t a
+ Pandora.Pattern.Functor.Bindable: join :: Bindable t => ((t :. t) > a) -> t a
- Pandora.Pattern.Functor.Contravariant: (>$$$$<) :: (Contravariant t, Contravariant u, Contravariant v, Contravariant w) => (a -> b) -> ((t :.: (u :.: (v :.: w))) >< a) -> (t :.: (u :.: (v :.: w))) >< b
+ Pandora.Pattern.Functor.Contravariant: (>$$$$<) :: (Contravariant t, Contravariant u, Contravariant v, Contravariant w) => (a -> b) -> ((t :. (u :. (v :. w))) > a) -> (t :. (u :. (v :. w))) > b
- Pandora.Pattern.Functor.Contravariant: (>$$$<) :: (Contravariant t, Contravariant u, Contravariant v) => (a -> b) -> ((t :.: (u :.: v)) >< b) -> (t :.: (u :.: v)) >< a
+ Pandora.Pattern.Functor.Contravariant: (>$$$<) :: (Contravariant t, Contravariant u, Contravariant v) => (a -> b) -> ((t :. (u :. v)) > b) -> (t :. (u :. v)) > a
- Pandora.Pattern.Functor.Contravariant: (>$$<) :: (Contravariant t, Contravariant u) => (a -> b) -> ((t :.: u) >< a) -> (t :.: u) >< b
+ Pandora.Pattern.Functor.Contravariant: (>$$<) :: (Contravariant t, Contravariant u) => (a -> b) -> ((t :. u) > a) -> (t :. u) > b
- Pandora.Pattern.Functor.Contravariant: (>&&&&<) :: (Contravariant t, Contravariant u, Contravariant v, Contravariant w) => ((t :.: (u :.: (v :.: w))) >< a) -> (a -> b) -> (t :.: (u :.: (v :.: w))) >< b
+ Pandora.Pattern.Functor.Contravariant: (>&&&&<) :: (Contravariant t, Contravariant u, Contravariant v, Contravariant w) => ((t :. (u :. (v :. w))) > a) -> (a -> b) -> (t :. (u :. (v :. w))) > b
- Pandora.Pattern.Functor.Contravariant: (>&&&<) :: (Contravariant t, Contravariant u, Contravariant v) => ((t :.: (u :.: v)) >< b) -> (a -> b) -> (t :.: (u :.: v)) >< a
+ Pandora.Pattern.Functor.Contravariant: (>&&&<) :: (Contravariant t, Contravariant u, Contravariant v) => ((t :. (u :. v)) > b) -> (a -> b) -> (t :. (u :. v)) > a
- Pandora.Pattern.Functor.Contravariant: (>&&<) :: (Contravariant t, Contravariant u) => ((t :.: u) >< a) -> (a -> b) -> (t :.: u) >< b
+ Pandora.Pattern.Functor.Contravariant: (>&&<) :: (Contravariant t, Contravariant u) => ((t :. u) > a) -> (a -> b) -> (t :. u) > b
- Pandora.Pattern.Functor.Covariant: (<$$$$>) :: (Covariant t, Covariant u, Covariant v, Covariant w) => (a -> b) -> ((t :.: (u :.: (v :.: w))) >< a) -> (t :.: (u :.: (v :.: w))) >< b
+ Pandora.Pattern.Functor.Covariant: (<$$$$>) :: (Covariant t, Covariant u, Covariant v, Covariant w) => (a -> b) -> ((t :. (u :. (v :. w))) > a) -> (t :. (u :. (v :. w))) > b
- Pandora.Pattern.Functor.Covariant: (<$$$>) :: (Covariant t, Covariant u, Covariant v) => (a -> b) -> ((t :.: (u :.: v)) >< a) -> (t :.: (u :.: v)) >< b
+ Pandora.Pattern.Functor.Covariant: (<$$$>) :: (Covariant t, Covariant u, Covariant v) => (a -> b) -> ((t :. (u :. v)) > a) -> (t :. (u :. v)) > b
- Pandora.Pattern.Functor.Covariant: (<$$>) :: (Covariant t, Covariant u) => (a -> b) -> ((t :.: u) >< a) -> (t :.: u) >< b
+ Pandora.Pattern.Functor.Covariant: (<$$>) :: (Covariant t, Covariant u) => (a -> b) -> ((t :. u) > a) -> (t :. u) > b
- Pandora.Pattern.Functor.Covariant: (<&&&&>) :: (Covariant t, Covariant u, Covariant v, Covariant w) => ((t :.: (u :.: (v :.: w))) >< a) -> (a -> b) -> (t :.: (u :.: (v :.: w))) >< b
+ Pandora.Pattern.Functor.Covariant: (<&&&&>) :: (Covariant t, Covariant u, Covariant v, Covariant w) => ((t :. (u :. (v :. w))) > a) -> (a -> b) -> (t :. (u :. (v :. w))) > b
- Pandora.Pattern.Functor.Covariant: (<&&&>) :: (Covariant t, Covariant u, Covariant v) => ((t :.: (u :.: v)) >< a) -> (a -> b) -> (t :.: (u :.: v)) >< b
+ Pandora.Pattern.Functor.Covariant: (<&&&>) :: (Covariant t, Covariant u, Covariant v) => ((t :. (u :. v)) > a) -> (a -> b) -> (t :. (u :. v)) > b
- Pandora.Pattern.Functor.Covariant: (<&&>) :: (Covariant t, Covariant u) => ((t :.: u) >< a) -> (a -> b) -> (t :.: u) >< b
+ Pandora.Pattern.Functor.Covariant: (<&&>) :: (Covariant t, Covariant u) => ((t :. u) > a) -> (a -> b) -> (t :. u) > b
- Pandora.Pattern.Functor.Distributive: (>>-) :: (Distributive u, Covariant t) => t a -> (a -> u b) -> (u :.: t) >< b
+ Pandora.Pattern.Functor.Distributive: (>>-) :: (Distributive u, Covariant t) => t a -> (a -> u b) -> (u :. t) > b
- Pandora.Pattern.Functor.Distributive: (>>>-) :: (Distributive u, Covariant t, Covariant v) => ((t :.: v) >< a) -> (a -> u b) -> (u :.: (t :.: v)) >< b
+ Pandora.Pattern.Functor.Distributive: (>>>-) :: (Distributive u, Covariant t, Covariant v) => ((t :. v) > a) -> (a -> u b) -> (u :. (t :. v)) > b
- Pandora.Pattern.Functor.Distributive: (>>>>-) :: (Distributive u, Covariant t, Covariant v, Covariant w) => ((t :.: (v :.: w)) >< a) -> (a -> u b) -> (u :.: (t :.: (v :.: w))) >< b
+ Pandora.Pattern.Functor.Distributive: (>>>>-) :: (Distributive u, Covariant t, Covariant v, Covariant w) => ((t :. (v :. w)) > a) -> (a -> u b) -> (u :. (t :. (v :. w))) > b
- Pandora.Pattern.Functor.Distributive: (>>>>>-) :: (Distributive u, Covariant t, Covariant v, Covariant w, Covariant j) => ((t :.: (v :.: (w :.: j))) >< a) -> (a -> u b) -> (u :.: (t :.: (v :.: (w :.: j)))) >< b
+ Pandora.Pattern.Functor.Distributive: (>>>>>-) :: (Distributive u, Covariant t, Covariant v, Covariant w, Covariant j) => ((t :. (v :. (w :. j))) > a) -> (a -> u b) -> (u :. (t :. (v :. (w :. j)))) > b
- Pandora.Pattern.Functor.Distributive: collect :: (Distributive u, Covariant t) => (a -> u b) -> t a -> (u :.: t) >< b
+ Pandora.Pattern.Functor.Distributive: collect :: (Distributive u, Covariant t) => (a -> u b) -> t a -> (u :. t) > b
- Pandora.Pattern.Functor.Distributive: distribute :: (Distributive u, Covariant t) => ((t :.: u) >< a) -> (u :.: t) >< a
+ Pandora.Pattern.Functor.Distributive: distribute :: (Distributive u, Covariant t) => ((t :. u) > a) -> (u :. t) > a
- Pandora.Pattern.Functor.Extendable: duplicate :: Extendable t => t a -> (t :.: t) >< a
+ Pandora.Pattern.Functor.Extendable: duplicate :: Extendable t => t a -> (t :. t) > a
- Pandora.Pattern.Functor.Traversable: (->>) :: (Traversable t, Pointable u, Applicative u) => t a -> (a -> u b) -> (u :.: t) >< b
+ Pandora.Pattern.Functor.Traversable: (->>) :: (Traversable t, Pointable u, Applicative u) => t a -> (a -> u b) -> (u :. t) > b
- Pandora.Pattern.Functor.Traversable: (->>>) :: (Traversable t, Pointable u, Applicative u, Traversable v) => ((v :.: t) >< a) -> (a -> u b) -> (u :.: (v :.: t)) >< b
+ Pandora.Pattern.Functor.Traversable: (->>>) :: (Traversable t, Pointable u, Applicative u, Traversable v) => ((v :. t) > a) -> (a -> u b) -> (u :. (v :. t)) > b
- Pandora.Pattern.Functor.Traversable: (->>>>) :: (Traversable t, Pointable u, Applicative u, Traversable v, Traversable w) => ((w :.: (v :.: t)) >< a) -> (a -> u b) -> (u :.: (w :.: (v :.: t))) >< b
+ Pandora.Pattern.Functor.Traversable: (->>>>) :: (Traversable t, Pointable u, Applicative u, Traversable v, Traversable w) => ((w :. (v :. t)) > a) -> (a -> u b) -> (u :. (w :. (v :. t))) > b
- Pandora.Pattern.Functor.Traversable: (->>>>>) :: (Traversable t, Pointable u, Applicative u, Traversable v, Traversable w, Traversable j) => ((j :.: (w :.: (v :.: t))) >< a) -> (a -> u b) -> (u :.: (j :.: (w :.: (v :.: t)))) >< b
+ Pandora.Pattern.Functor.Traversable: (->>>>>) :: (Traversable t, Pointable u, Applicative u, Traversable v, Traversable w, Traversable j) => ((j :. (w :. (v :. t))) > a) -> (a -> u b) -> (u :. (j :. (w :. (v :. t)))) > b
- Pandora.Pattern.Functor.Traversable: sequence :: (Traversable t, Pointable u, Applicative u) => (t :.: u) a -> (u :.: t) >< a
+ Pandora.Pattern.Functor.Traversable: sequence :: (Traversable t, Pointable u, Applicative u) => (t :. u) a -> (u :. t) > a
- Pandora.Pattern.Functor.Traversable: traverse :: (Traversable t, Pointable u, Applicative u) => (a -> u b) -> t a -> (u :.: t) >< b
+ Pandora.Pattern.Functor.Traversable: traverse :: (Traversable t, Pointable u, Applicative u) => (a -> u b) -> t a -> (u :. t) > b
- Pandora.Pattern.Junction.Schemes.TU: TU :: ((t :.: u) >< a) -> TU ct cu t u a
+ Pandora.Pattern.Junction.Schemes.TU: TU :: ((t :. u) > a) -> TU ct cu t u a
- Pandora.Pattern.Junction.Schemes.TUV: TUV :: ((t :.: (u :.: v)) >< a) -> TUV ct cu cv t u v a
+ Pandora.Pattern.Junction.Schemes.TUV: TUV :: ((t :. (u :. v)) > a) -> TUV ct cu cv t u v a
- Pandora.Pattern.Junction.Schemes.TUVW: TUVW :: ((t :.: (u :.: (v :.: w))) >< a) -> TUVW ct cu cv cw t u v w a
+ Pandora.Pattern.Junction.Schemes.TUVW: TUVW :: ((t :. (u :. (v :. w))) > a) -> TUVW ct cu cv cw t u v w a
- Pandora.Pattern.Junction.Schemes.UT: UT :: ((u :.: t) >< a) -> UT ct cu t u a
+ Pandora.Pattern.Junction.Schemes.UT: UT :: ((u :. t) > a) -> UT ct cu t u a
- Pandora.Pattern.Junction.Schemes.UTU: UTU :: ((u :.: t u) >< a) -> UTU ct cu t u a
+ Pandora.Pattern.Junction.Schemes.UTU: UTU :: ((u :. t u) > a) -> UTU ct cu t u a
Files
- CHANGELOG.md +11/−0
- Pandora/Core/Functor.hs +12/−7
- Pandora/Paradigm/Basis/Conclusion.hs +7/−6
- Pandora/Paradigm/Basis/Continuation.hs +2/−1
- Pandora/Paradigm/Basis/Free.hs +2/−2
- Pandora/Paradigm/Basis/Identity.hs +3/−3
- Pandora/Paradigm/Basis/Maybe.hs +7/−6
- Pandora/Paradigm/Basis/Product.hs +3/−3
- Pandora/Paradigm/Basis/Twister.hs +3/−3
- Pandora/Paradigm/Inventory/Optics.hs +9/−2
- Pandora/Paradigm/Inventory/Stateful.hs +9/−9
- Pandora/Paradigm/Inventory/Storage.hs +3/−3
- Pandora/Paradigm/Structure/Graph.hs +17/−5
- Pandora/Paradigm/Structure/Stack.hs +3/−3
- Pandora/Pattern.hs +1/−0
- Pandora/Pattern/Functor.hs +2/−0
- Pandora/Pattern/Functor/Adjoint.hs +18/−8
- Pandora/Pattern/Functor/Applicative.hs +11/−8
- Pandora/Pattern/Functor/Bindable.hs +5/−2
- Pandora/Pattern/Functor/Contravariant.hs +7/−7
- Pandora/Pattern/Functor/Covariant.hs +7/−7
- Pandora/Pattern/Functor/Distributive.hs +8/−8
- Pandora/Pattern/Functor/Divariant.hs +25/−0
- Pandora/Pattern/Functor/Extendable.hs +2/−2
- Pandora/Pattern/Functor/Pointable.hs +4/−0
- Pandora/Pattern/Functor/Representable.hs +28/−0
- Pandora/Pattern/Functor/Traversable.hs +7/−7
- Pandora/Pattern/Junction.hs +1/−5
- Pandora/Pattern/Junction/Schemes.hs +7/−0
- Pandora/Pattern/Junction/Schemes/TU.hs +3/−53
- Pandora/Pattern/Junction/Schemes/TUV.hs +3/−81
- Pandora/Pattern/Junction/Schemes/TUVW.hs +3/−113
- Pandora/Pattern/Junction/Schemes/UT.hs +3/−60
- Pandora/Pattern/Junction/Schemes/UTU.hs +3/−60
- README.md +0/−6
- pandora.cabal +4/−1
CHANGELOG.md view
@@ -99,3 +99,14 @@ * Rename `equip` to `wrap` and `Layout` to `Schema` in `Transformer` typeclass * Make `Composition` a superclass for `Transformer` typeclass * Move all `Junction` modules to `Pattern` submodule except `Kan`++# 0.2.0+* Define `Representable` functor typeclass+* Define `Pointable`, `Applicative`, `Bindable` and `Representable` instances for `->`+* Define infix `Adjoint` operators - `-|` and `|-`+* Define `Adjoint` instance for `Stateful` and `Storage` datatypes+* Change `Graph` definition: from type synonymous to newtype+* Rename `><` to `>`, `:.:` to `.:`, `.:.` to `:.`+* Remove all instances for `Junction` schemes+* Define type operators for profunctorish types: `::|:.`, `::|.:` and `::|::`+* Define `Divariant` (also known as `Profunctor`) `Functor` typeclass
Pandora/Core/Functor.hs view
@@ -1,12 +1,17 @@-module Pandora.Core.Functor (Variant (..), type (:.:), type (.:.), type (><)) where+module Pandora.Core.Functor where data Variant = Co | Contra -infixr 1 :.:-type (:.:) t u a = t (u a)+infixr 1 :.+type (:.) t u a = t (u a) -infixr 1 .:.-type (.:.) t u a = u (t a)+infixr 1 .:+type (.:) t u a = u (t a) -infixr 0 ><-type (><) t a = t a+infixr 0 >+type (>) t a = t a++infixr 2 ::|:., ::|.:, ::|::+type (::|:.) p a b = p (p a b) b+type (::|.:) p a b = p a (p a b)+type (::|::) p a b = p (p a b) (p a b)
Pandora/Paradigm/Basis/Conclusion.hs view
@@ -1,5 +1,6 @@ module Pandora.Paradigm.Basis.Conclusion (Conclusion (..), conclusion, fail) where +import Pandora.Core.Functor (Variant (Co)) import Pandora.Core.Morphism ((.), ($)) import Pandora.Pattern.Junction.Composition (Composition (Primary, unwrap)) import Pandora.Pattern.Junction.Transformer (Transformer (Schema, lay, wrap))@@ -47,23 +48,23 @@ unwrap x = x instance Transformer (Conclusion e) where- type Schema (Conclusion e) u = UT (Conclusion e) () (Conclusion e) u+ type Schema (Conclusion e) u = UT 'Co 'Co (Conclusion e) u lay x = UT $ Success <$> x wrap x = UT . point $ x -instance Covariant u => Covariant (UT (Conclusion e) () (Conclusion e) u) where+instance Covariant u => Covariant (UT 'Co 'Co (Conclusion e) u) where f <$> UT x = UT $ f <$$> x -instance Applicative u => Applicative (UT (Conclusion e) () (Conclusion e) u) where+instance Applicative u => Applicative (UT 'Co 'Co (Conclusion e) u) where UT f <*> UT x = UT $ apply <$> f <*> x -instance Pointable u => Pointable (UT (Conclusion e) () (Conclusion e) u) where+instance Pointable u => Pointable (UT 'Co 'Co (Conclusion e) u) where point = UT . point . point -instance (Pointable u, Bindable u) => Bindable (UT (Conclusion e) () (Conclusion e) u) where+instance (Pointable u, Bindable u) => Bindable (UT 'Co 'Co (Conclusion e) u) where UT x >>= f = UT $ x >>= conclusion (point . Failure) (unwrap . f) -instance Monad u => Monad (UT (Conclusion e) () (Conclusion e) u) where+instance Monad u => Monad (UT 'Co 'Co (Conclusion e) u) where instance (Setoid e, Setoid a) => Setoid (Conclusion e a) where Success x == Success y = x == y
Pandora/Paradigm/Basis/Continuation.hs view
@@ -1,5 +1,6 @@ module Pandora.Paradigm.Basis.Continuation (Continuation (..), oblige, cwcc, reset, shift) where +import Pandora.Core.Functor (type (:.), type (>), type (::|:.)) import Pandora.Core.Morphism ((.), ($), (!), (?)) import Pandora.Pattern.Functor.Covariant (Covariant ((<$>))) import Pandora.Pattern.Functor.Pointable (Pointable (point))@@ -7,7 +8,7 @@ import Pandora.Pattern.Functor.Bindable (Bindable ((>>=))) import Pandora.Pattern.Functor.Monad (Monad) -newtype Continuation r t a = Continuation { continue :: (a -> t r) -> t r }+newtype Continuation r t a = Continuation { continue :: (->) ::|:. a :. t > r } instance Covariant t => Covariant (Continuation r t) where f <$> Continuation continuation = Continuation $ continuation . (. f)
Pandora/Paradigm/Basis/Free.hs view
@@ -1,6 +1,6 @@ module Pandora.Paradigm.Basis.Free (Free (..)) where -import Pandora.Core.Functor (type (:.:), type (><))+import Pandora.Core.Functor (type (:.), type (>)) import Pandora.Core.Morphism (($)) import Pandora.Pattern.Functor.Covariant (Covariant ((<$>), (<$$>))) import Pandora.Pattern.Functor.Avoidable (Avoidable (empty))@@ -10,7 +10,7 @@ import Pandora.Pattern.Functor.Traversable (Traversable ((->>), (->>>))) import Pandora.Pattern.Functor.Bindable (Bindable ((>>=))) -data Free t a = Pure a | Impure (t :.: Free t >< a)+data Free t a = Pure a | Impure (t :. Free t > a) instance Covariant t => Covariant (Free t) where f <$> Pure x = Pure $ f x
Pandora/Paradigm/Basis/Identity.hs view
@@ -11,7 +11,7 @@ import Pandora.Pattern.Functor.Extendable (Extendable ((=>>))) import Pandora.Pattern.Functor.Monad (Monad) import Pandora.Pattern.Functor.Comonad (Comonad)-import Pandora.Pattern.Functor.Adjoint (Adjoint (phi, psi))+import Pandora.Pattern.Functor.Adjoint (Adjoint ((-|), (|-))) import Pandora.Pattern.Object.Setoid (Setoid ((==))) import Pandora.Pattern.Object.Chain (Chain ((<=>))) import Pandora.Pattern.Object.Semigroup (Semigroup ((+)))@@ -52,8 +52,8 @@ instance Comonad Identity instance Adjoint Identity Identity where- phi f = Identity . f . Identity- psi f = extract . extract . comap f+ x -| f = Identity . f . Identity $ x+ x |- g = extract . extract . comap g $ x instance Setoid a => Setoid (Identity a) where Identity x == Identity y = x == y
Pandora/Paradigm/Basis/Maybe.hs view
@@ -1,5 +1,6 @@ module Pandora.Paradigm.Basis.Maybe (Maybe (..), maybe) where +import Pandora.Core.Functor (Variant (Co)) import Pandora.Core.Morphism ((.), ($)) import Pandora.Pattern.Junction.Composition (Composition (Primary, unwrap)) import Pandora.Pattern.Junction.Transformer (Transformer (Schema, lay, wrap))@@ -54,23 +55,23 @@ unwrap x = x instance Transformer Maybe where- type Schema Maybe u = UT Maybe () Maybe u+ type Schema Maybe u = UT 'Co 'Co Maybe u lay x = UT $ Just <$> x wrap x = UT . point $ x -instance Covariant u => Covariant (UT Maybe () Maybe u) where+instance Covariant u => Covariant (UT 'Co 'Co Maybe u) where f <$> UT x = UT $ f <$$> x -instance Applicative u => Applicative (UT Maybe () Maybe u) where+instance Applicative u => Applicative (UT 'Co 'Co Maybe u) where UT f <*> UT x = UT $ apply <$> f <*> x -instance Pointable u => Pointable (UT Maybe () Maybe u) where+instance Pointable u => Pointable (UT 'Co 'Co Maybe u) where point = UT . point . point -instance (Pointable u, Bindable u) => Bindable (UT Maybe () Maybe u) where+instance (Pointable u, Bindable u) => Bindable (UT 'Co 'Co Maybe u) where UT x >>= f = UT $ x >>= maybe (point Nothing) (unwrap . f) -instance Monad u => Monad (UT Maybe () Maybe u) where+instance Monad u => Monad (UT 'Co 'Co Maybe u) where instance Setoid a => Setoid (Maybe a) where Just x == Just y = x == y
Pandora/Paradigm/Basis/Product.hs view
@@ -7,7 +7,7 @@ import Pandora.Pattern.Functor.Traversable (Traversable ((->>))) import Pandora.Pattern.Functor.Extendable (Extendable ((=>>))) import Pandora.Pattern.Functor.Comonad (Comonad)-import Pandora.Pattern.Functor.Adjoint (Adjoint (phi, psi))+import Pandora.Pattern.Functor.Adjoint (Adjoint ((-|), (|-))) import Pandora.Pattern.Object.Setoid (Setoid ((==)), (&&)) import Pandora.Pattern.Object.Semigroup (Semigroup ((+))) import Pandora.Pattern.Object.Monoid (Monoid (zero))@@ -37,8 +37,8 @@ instance Comonad (Product a) where instance Adjoint (Product a) ((->) a) where- phi f x y = f $ y :*: x- psi f (y :*: x) = f x y+ x -| f = \y -> f $ y :*: x+ (y :*: x) |- f = f x y instance (Setoid a, Setoid b) => Setoid (Product a b) where (x :*: y) == (x' :*: y') = x == x' && y == y'
Pandora/Paradigm/Basis/Twister.hs view
@@ -1,6 +1,6 @@ module Pandora.Paradigm.Basis.Twister (Twister (..), untwist, coiterate, section) where -import Pandora.Core.Functor (type (:.:), type (><))+import Pandora.Core.Functor (type (:.), type (>)) import Pandora.Core.Transformation (type (~>)) import Pandora.Pattern.Functor.Covariant (Covariant ((<$>), (<$$>), comap)) import Pandora.Pattern.Functor.Avoidable (Avoidable (empty))@@ -19,7 +19,7 @@ infixr 5 :< -data Twister t a = a :< (t :.: Twister t >< a)+data Twister t a = a :< (t :. Twister t > a) instance Covariant t => Covariant (Twister t) where f <$> (x :< xs) = f x :< (f <$$> xs)@@ -56,7 +56,7 @@ instance (Monoid a, forall b . Semigroup b => Monoid (t b)) => Monoid (Twister t a) where zero = zero :< zero -untwist :: Twister t a -> (t :.: Twister t) a+untwist :: Twister t a -> (t :. Twister t) a untwist (_ :< xs) = xs coiterate :: Covariant t => (a -> t a) -> a -> Twister t a
Pandora/Paradigm/Inventory/Optics.hs view
@@ -1,10 +1,17 @@ module Pandora.Paradigm.Inventory.Optics (Lens, type (:-.), (|>), view, set, over, (^.), (.~), (%~)) where -import Pandora.Core.Morphism ((.), ($))-import Pandora.Paradigm.Inventory.Storage (Storage, access, position, retrofit)+import Pandora.Core.Morphism ((.), ($), (!))+import Pandora.Paradigm.Basis.Product (Product ((:*:)))+import Pandora.Paradigm.Inventory.Stateful (Stateful (Stateful), statefully)+import Pandora.Paradigm.Inventory.Storage (Storage (Storage), access, position, retrofit) import Pandora.Pattern.Functor.Covariant (Covariant ((<$))) import Pandora.Pattern.Functor.Extractable (Extractable (extract))+import Pandora.Pattern.Functor.Adjoint (Adjoint ((-|), (|-)))++instance Adjoint (Storage s) (Stateful s) where+ v -| f = Stateful $ \s -> (:*:) s . f . Storage $ s :*: (v !)+ Storage (s :*: f) |- g = extract . statefully s . g $ f s infixr 0 :-. type (:-.) src tgt = Lens src tgt
Pandora/Paradigm/Inventory/Stateful.hs view
@@ -1,7 +1,7 @@ module Pandora.Paradigm.Inventory.Stateful (Stateful (..), statefully, get, modify, put, fold, find) where -import Pandora.Core.Functor (type (:.:), type (><))+import Pandora.Core.Functor (Variant (Co), type (:.), type (>)) import Pandora.Core.Morphism ((.), ($)) import Pandora.Pattern.Junction.Composition (Composition (Primary, unwrap)) import Pandora.Pattern.Junction.Transformer (Transformer (Schema, lay, wrap))@@ -19,7 +19,7 @@ import Pandora.Pattern.Functor.Monad (Monad) import Pandora.Pattern.Object.Setoid (bool) -newtype Stateful s a = Stateful ((->) s :.: (:*:) s >< a)+newtype Stateful s a = Stateful ((->) s :. (:*:) s > a) statefully :: s -> Stateful s a -> s :*: a statefully initial (Stateful state) = state initial@@ -58,24 +58,24 @@ find p struct = fold empty (\x s -> (<+>) s . bool empty (point x) . predicate p $ x) struct instance Composition (Stateful s) where- type Primary (Stateful s) a = (->) s :.: (:*:) s >< a+ type Primary (Stateful s) a = (->) s :. (:*:) s > a unwrap (Stateful x) = x instance Transformer (Stateful s) where- type Schema (Stateful s) u = TUV Stateful () Stateful ((->) s) u ((:*:) s)+ type Schema (Stateful s) u = TUV 'Co 'Co 'Co ((->) s) u ((:*:) s) lay x = TUV $ \s -> (s :*:) <$> x wrap x = TUV $ point <$> unwrap x -instance Covariant u => Covariant (TUV Stateful () Stateful ((->) s) u ((:*:) s)) where+instance Covariant u => Covariant (TUV 'Co 'Co 'Co ((->) s) u ((:*:) s)) where f <$> TUV x = TUV $ \old -> f <$$> x old -instance Bindable u => Applicative (TUV Stateful () Stateful ((->) s) u ((:*:) s)) where+instance Bindable u => Applicative (TUV 'Co 'Co 'Co ((->) s) u ((:*:) s)) where TUV f <*> TUV x = TUV $ \old -> f old >>= \(new :*: g) -> g <$$> x new -instance Pointable u => Pointable (TUV Stateful () Stateful ((->) s) u ((:*:) s)) where+instance Pointable u => Pointable (TUV 'Co 'Co 'Co ((->) s) u ((:*:) s)) where point x = TUV $ \s -> point $ s :*: x -instance Bindable u => Bindable (TUV Stateful () Stateful ((->) s) u ((:*:) s)) where+instance Bindable u => Bindable (TUV 'Co 'Co 'Co ((->) s) u ((:*:) s)) where TUV x >>= f = TUV $ \old -> x old >>= \(new :*: y) -> ($ new) . unwrap . f $ y -instance Monad u => Monad (TUV Stateful () Stateful ((->) s) u ((:*:) s)) where+instance Monad u => Monad (TUV 'Co 'Co 'Co ((->) s) u ((:*:) s)) where
Pandora/Paradigm/Inventory/Storage.hs view
@@ -1,6 +1,6 @@ module Pandora.Paradigm.Inventory.Storage (Storage (..), position, access, retrofit) where -import Pandora.Core.Functor (type (:.:), type (><))+import Pandora.Core.Functor (type (:.), type (>)) import Pandora.Core.Morphism ((.), ($), (?)) import Pandora.Paradigm.Basis.Product (Product ((:*:)), type (:*:)) import Pandora.Pattern.Functor.Covariant (Covariant ((<$>)))@@ -8,13 +8,13 @@ import Pandora.Pattern.Functor.Extendable (Extendable ((=>>))) import Pandora.Pattern.Functor.Comonad (Comonad) -newtype Storage p a = Storage { stored :: (:*:) p :.: (->) p >< a }+newtype Storage p a = Storage { stored :: (:*:) p :. (->) p > a } instance Covariant (Storage p) where g <$> Storage (p :*: f) = Storage . (:*:) p $ (g .) f instance Extractable (Storage p) where- extract (Storage (p :*: x)) = x p+ extract (Storage (p :*: f)) = f p instance Extendable (Storage p) where Storage (old :*: f) =>> g = Storage . (:*:) old
Pandora/Paradigm/Structure/Graph.hs view
@@ -1,15 +1,27 @@ module Pandora.Paradigm.Structure.Graph (Graph, loose) where -import Pandora.Core.Functor (type (:.:), type (><))-import Pandora.Core.Morphism ((.))+import Pandora.Core.Functor (type (:.), type (>))+import Pandora.Core.Morphism ((.), ($)) import Pandora.Paradigm.Basis.Edges (Edges (Empty, Overlay)) import Pandora.Paradigm.Basis.Twister (Twister ((:<))) import Pandora.Paradigm.Inventory.Stateful (fold)-import Pandora.Pattern.Functor.Traversable (Traversable)+import Pandora.Pattern.Functor.Covariant (Covariant ((<$>), (<$$>)))+import Pandora.Pattern.Functor.Traversable (Traversable ((->>), (->>>)))+import Pandora.Pattern.Junction.Composition (Composition (Primary, unwrap)) -- | Acyclic graph structure without loops-type Graph a = Edges :.: Twister Edges >< a+newtype Graph a = Graph (Edges :. Twister Edges > a) +instance Covariant Graph where+ f <$> Graph stack = Graph $ f <$$> stack++instance Traversable Graph where+ Graph stack ->> f = Graph <$> stack ->>> f++instance Composition Graph where+ type Primary Graph a = Edges :. Twister Edges > a+ unwrap (Graph stack) = stack+ -- | Transform any traversable structure into all loose edges graph loose :: Traversable t => t a -> Graph a-loose = fold Empty (\x -> Overlay . (:<) x)+loose = Graph . fold Empty (\x -> Overlay . (:<) x)
Pandora/Paradigm/Structure/Stack.hs view
@@ -1,6 +1,6 @@ module Pandora.Paradigm.Structure.Stack (Stack, push, top, pop, filter, linearize) where -import Pandora.Core.Functor (type (:.:), type (><))+import Pandora.Core.Functor (type (:.), type (>)) import Pandora.Core.Morphism ((.), ($)) import Pandora.Core.Transformation (type (~>)) import Pandora.Paradigm.Basis.Maybe (Maybe (Just, Nothing))@@ -19,7 +19,7 @@ import Pandora.Pattern.Object.Setoid (bool) -- | Linear data structure that serves as a collection of elements-newtype Stack a = Stack (Maybe :.: Twister Maybe >< a)+newtype Stack a = Stack (Maybe :. Twister Maybe > a) instance Covariant Stack where f <$> Stack stack = Stack $ f <$$> stack@@ -40,7 +40,7 @@ Stack stack ->> f = Stack <$> stack ->>> f instance Composition Stack where- type Primary Stack a = Maybe :.: Twister Maybe >< a+ type Primary Stack a = Maybe :. Twister Maybe > a unwrap (Stack stack) = stack push :: a -> Stack a -> Stack a
Pandora/Pattern.hs view
@@ -1,4 +1,5 @@ module Pandora.Pattern (module Exports) where import Pandora.Pattern.Object as Exports+import Pandora.Pattern.Junction as Exports import Pandora.Pattern.Functor as Exports
Pandora/Pattern/Functor.hs view
@@ -1,9 +1,11 @@ module Pandora.Pattern.Functor (module Exports) where +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 import Pandora.Pattern.Functor.Adjoint as Exports import Pandora.Pattern.Functor.Extendable as Exports import Pandora.Pattern.Functor.Bindable as Exports
Pandora/Pattern/Functor/Adjoint.hs view
@@ -1,9 +1,13 @@ module Pandora.Pattern.Functor.Adjoint (Adjoint (..), type (-|)) where -import Pandora.Core.Functor (type (:.:), type (><))+import Pandora.Core.Functor (type (:.), type (>)) import Pandora.Core.Morphism (identity) import Pandora.Pattern.Functor.Covariant (Covariant) +type (-|) = Adjoint++infixl 4 -|, |-+ {- | > When providing a new instance, you should ensure it satisfies the four laws: > * Left adjunction identity: phi cozero ≡ identity@@ -13,15 +17,21 @@ -} class (Covariant t, Covariant u) => Adjoint t u where- {-# MINIMAL phi, psi #-}+ {-# MINIMAL (-|), (|-) #-} -- | Left adjunction- phi :: (t a -> b) -> a -> u b+ (-|) :: a -> (t a -> b) -> u b -- | Right adjunction- psi :: (a -> u b) -> t a -> b+ (|-) :: t a -> (a -> u b) -> b - eta :: a -> u :.: t >< a+ -- | Prefix and flipped version of '-|'+ phi :: (t a -> b) -> a -> u b+ phi f x = x -| f+ -- | Prefix and flipped version of '|-'+ psi :: (a -> u b) -> t a -> b+ psi g x = x |- g+ -- | Also known as 'unit'+ eta :: a -> u :. t > a eta = phi identity- epsilon :: t :.: u >< a -> a+ -- | Also known as 'counit'+ epsilon :: t :. u > a -> a epsilon = psi identity--type (-|) = Adjoint
Pandora/Pattern/Functor/Applicative.hs view
@@ -1,7 +1,7 @@ module Pandora.Pattern.Functor.Applicative (Applicative (..)) where -import Pandora.Core.Functor (type (:.:), type (><))-import Pandora.Core.Morphism (identity)+import Pandora.Core.Functor (type (:.), type (>))+import Pandora.Core.Morphism (identity, ($)) import Pandora.Pattern.Functor.Covariant (Covariant ((<$>), (<$))) infixl 4 <*>, <*, *>@@ -32,13 +32,16 @@ forever x = x *> forever x -- | Infix versions of `apply` with various nesting levels- (<**>) :: Applicative u => t :.: u >< (a -> b) -> t :.: u >< a -> t :.: u >< b+ (<**>) :: Applicative u => t :. u > (a -> b) -> t :. u > a -> t :. u > b f <**> x = (<*>) <$> f <*> x- (<***>) :: (Applicative u, Applicative v) => t :.: u :.: v >< (a -> b)- -> t :.: u :.: v >< a -> t :.: u :.: v >< b+ (<***>) :: (Applicative u, Applicative v) => t :. u :. v > (a -> b)+ -> t :. u :. v > a -> t :. u :. v > b f <***> x = (<**>) <$> f <*> x (<****>) :: (Applicative u, Applicative v, Applicative w)- => t :.: u :.: v :.: w >< (a -> b)- -> t :.: u :.: v :.: w >< a- -> t :.: u :.: v :.: w >< b+ => t :. u :. v :. w > (a -> b)+ -> t :. u :. v :. w > a+ -> t :. u :. v :. w > b f <****> x = (<***>) <$> f <*> x++instance Applicative ((->) e) where+ (<*>) f g x = f x $ g x
Pandora/Pattern/Functor/Bindable.hs view
@@ -1,6 +1,6 @@ module Pandora.Pattern.Functor.Bindable (Bindable (..)) where -import Pandora.Core.Functor (type (:.:), type (><))+import Pandora.Core.Functor (type (:.), type (>)) import Pandora.Core.Morphism ((?), identity) import Pandora.Pattern.Functor.Covariant (Covariant) @@ -24,7 +24,7 @@ bind :: (a -> t b) -> t a -> t b bind f t = t >>= f -- | Merge effects/contexts, the dual of 'duplicate'- join :: t :.: t >< a -> t a+ join :: t :. t > a -> t a join t = t >>= identity -- | Left-to-right Kleisli composition (>=>) :: (a -> t b) -> (b -> t c) -> (a -> t c)@@ -32,3 +32,6 @@ -- | Right-to-left Kleisli composition (<=<) :: (b -> t c) -> (a -> t b) -> (a -> t c) (<=<) = (?) (>=>)++instance Bindable ((->) e) where+ f >>= g = \x -> g (f x) x
Pandora/Pattern/Functor/Contravariant.hs view
@@ -1,6 +1,6 @@ module Pandora.Pattern.Functor.Contravariant (Contravariant (..)) where -import Pandora.Core.Functor (type (:.:), type (><))+import Pandora.Core.Functor (type (:.), type (>)) import Pandora.Core.Morphism ((.), (!), (?)) infixl 4 >$<, $<, >$@@ -33,21 +33,21 @@ x >&< f = f >$< x -- | Infix versions of `contramap` with various nesting levels- (>$$<) :: Contravariant u => (a -> b) -> t :.: u >< a -> t :.: u >< b+ (>$$<) :: Contravariant u => (a -> b) -> t :. u > a -> t :. u > b (>$$<) = (>$<) . (>$<) (>$$$<) :: (Contravariant u, Contravariant v)- => (a -> b) -> t :.: u :.: v >< b -> t :.: u :.: v >< a+ => (a -> b) -> t :. u :. v > b -> t :. u :. v > a (>$$$<) = (>$<) . (>$<) . (>$<) (>$$$$<) :: (Contravariant u, Contravariant v, Contravariant w)- => (a -> b) -> t :.: u :.: v :.: w >< a -> t :.: u :.: v :.: w >< b+ => (a -> b) -> t :. u :. v :. w > a -> t :. u :. v :. w > b (>$$$$<) = (>$<) . (>$<) . (>$<) . (>$<) -- | Infix flipped versions of `contramap` with various nesting levels- (>&&<) :: Contravariant u => t :.: u >< a -> (a -> b) -> t :.: u >< b+ (>&&<) :: Contravariant u => t :. u > a -> (a -> b) -> t :. u > b x >&&< f = f >$$< x (>&&&<) :: (Contravariant u, Contravariant v)- => t :.: u :.: v >< b -> (a -> b) -> t :.: u :.: v >< a+ => t :. u :. v > b -> (a -> b) -> t :. u :. v > a x >&&&< f = f >$$$< x (>&&&&<) :: (Contravariant u, Contravariant v, Contravariant w)- => t :.: u :.: v :.: w >< a -> (a -> b) -> t :.: u :.: v :.: w >< b+ => t :. u :. v :. w > a -> (a -> b) -> t :. u :. v :. w > b x >&&&&< f = f >$$$$< x
Pandora/Pattern/Functor/Covariant.hs view
@@ -1,6 +1,6 @@ module Pandora.Pattern.Functor.Covariant (Covariant (..)) where -import Pandora.Core.Functor (type (:.:), type (><))+import Pandora.Core.Functor (type (:.), type (>)) import Pandora.Core.Morphism (fix, (.), ($), (!), (?)) infixl 4 <$>, <$, $>@@ -36,23 +36,23 @@ x <&> f = f <$> x -- | Infix versions of `comap` with various nesting levels- (<$$>) :: Covariant u => (a -> b) -> t :.: u >< a -> t :.: u >< b+ (<$$>) :: Covariant u => (a -> b) -> t :. u > a -> t :. u > b (<$$>) = (<$>) . (<$>) (<$$$>) :: (Covariant u, Covariant v)- => (a -> b) -> t :.: u :.: v >< a -> t :.: u :.: v >< b+ => (a -> b) -> t :. u :. v > a -> t :. u :. v > b (<$$$>) = (<$>) . (<$>) . (<$>) (<$$$$>) :: (Covariant u, Covariant v, Covariant w)- => (a -> b) -> t :.: u :.: v :.: w >< a -> t :.: u :.: v :.: w >< b+ => (a -> b) -> t :. u :. v :. w > a -> t :. u :. v :. w > b (<$$$$>) = (<$>) . (<$>) . (<$>) . (<$>) -- | Infix flipped versions of `comap` with various nesting levels- (<&&>) :: Covariant u => t :.: u >< a -> (a -> b) -> t :.: u >< b+ (<&&>) :: Covariant u => t :. u > a -> (a -> b) -> t :. u > b x <&&> f = f <$$> x (<&&&>) :: (Covariant u, Covariant v)- => t :.: u :.: v >< a -> (a -> b) -> t :.: u :.: v >< b+ => t :. u :. v > a -> (a -> b) -> t :. u :. v > b x <&&&> f = f <$$$> x (<&&&&>) :: (Covariant u, Covariant v, Covariant w)- => t :.: u :.: v :.: w >< a -> (a -> b) -> t :.: u :.: v :.: w >< b+ => t :. u :. v :. w > a -> (a -> b) -> t :. u :. v :. w > b x <&&&&> f = f <$$$$> x instance Covariant ((->) a) where
Pandora/Pattern/Functor/Distributive.hs view
@@ -1,6 +1,6 @@ module Pandora.Pattern.Functor.Distributive (Distributive (..)) where -import Pandora.Core.Functor (type (:.:), type (><))+import Pandora.Core.Functor (type (:.), type (>)) import Pandora.Core.Morphism (identity, (.), (?)) import Pandora.Pattern.Functor.Covariant (Covariant ((<$>))) @@ -16,25 +16,25 @@ class Covariant u => Distributive u where {-# MINIMAL (>>-) #-}- -- | Infix version of 'collect'- (>>-) :: Covariant t => t a -> (a -> u b) -> u :.: t >< b+ -- | Infix and flipped version of 'collect'+ (>>-) :: Covariant t => t a -> (a -> u b) -> u :. t > b -- | Prefix version of '>>-'- collect :: Covariant t => (a -> u b) -> t a -> u :.: t >< b+ collect :: Covariant t => (a -> u b) -> t a -> u :. t > b collect f t = t >>- f -- | The dual of 'sequence'- distribute :: Covariant t => t :.: u >< a -> u :.: t >< a+ distribute :: Covariant t => t :. u > a -> u :. t > a distribute t = t >>- identity -- | Infix versions of `collect` with various nesting levels (>>>-) :: (Covariant t, Covariant v)- => t :.: v >< a -> (a -> u b) -> u :.: t :.: v >< b+ => t :. v > a -> (a -> u b) -> u :. t :. v > b x >>>- f = (collect . collect) f x (>>>>-) :: (Covariant t, Covariant v, Covariant w)- => t :.: v :.: w >< a -> (a -> u b) -> u :.: t :.: v :.: w >< b+ => t :. v :. w > a -> (a -> u b) -> u :. t :. v :. w > b x >>>>- f = (collect . collect . collect) f x (>>>>>-) :: (Covariant t, Covariant v, Covariant w, Covariant j)- => t :.: v :.: w :.: j >< a -> (a -> u b) -> u :.: t :.: v :.: w :.: j >< b+ => t :. v :. w :. j > a -> (a -> u b) -> u :. t :. v :. w :. j > b x >>>>>- f = (collect . collect . collect . collect) f x instance Distributive ((->) e) where
+ Pandora/Pattern/Functor/Divariant.hs view
@@ -0,0 +1,25 @@+module Pandora.Pattern.Functor.Divariant (Divariant (..)) where++import Pandora.Pattern.Functor.Covariant (Covariant)++import Pandora.Core.Morphism ((.), ($))++infixl 4 >->++{- |+> When providing a new instance, you should ensure it satisfies the two laws:+> * Identity: dimap identity identity ≡ identity+> * Composition: dimap (f . g) (h . i) ≡ dimap g h . dimap f i+-}++class (forall a . Covariant (t a)) => Divariant (t :: * -> * -> *) where+ {-# MINIMAL (>->) #-}+ -- | Infix version of 'comap'+ (>->) :: (a -> b) -> (c -> d) -> t b c -> t a d++ -- | Prefix version of '>->'+ dimap :: (a -> b) -> (c -> d) -> t b c -> t a d+ dimap f g x = f >-> g $ x++instance Divariant ((->)) where+ (>->) ab cd bc = cd . bc . ab
Pandora/Pattern/Functor/Extendable.hs view
@@ -1,6 +1,6 @@ module Pandora.Pattern.Functor.Extendable (Extendable (..)) where -import Pandora.Core.Functor (type (:.:), type (><))+import Pandora.Core.Functor (type (:.), type (>)) import Pandora.Core.Morphism ((.), (?), identity) import Pandora.Pattern.Functor.Covariant (Covariant) @@ -25,7 +25,7 @@ extend :: (t a -> b) -> t a -> t b extend f t = t =>> f -- | Clone existing structure, the dual of 'join'- duplicate :: t a -> t :.: t >< a+ duplicate :: t a -> t :. t > a duplicate t = t =>> identity -- | Right-to-left Cokleisli composition (=<=) :: (t b -> c) -> (t a -> b) -> t a -> c
Pandora/Pattern/Functor/Pointable.hs view
@@ -1,6 +1,10 @@ module Pandora.Pattern.Functor.Pointable (Pointable (..)) where +import Pandora.Core.Morphism ((!)) import Pandora.Pattern.Functor.Covariant (Covariant) class Covariant t => Pointable t where point :: a -> t a++instance Pointable ((->) e) where+ point = (!)
+ Pandora/Pattern/Functor/Representable.hs view
@@ -0,0 +1,28 @@+module Pandora.Pattern.Functor.Representable (Representable (..)) where++import Pandora.Core.Morphism (identity, (?))+import Pandora.Pattern.Functor.Pointable (Pointable)++{- |+> When providing a new instance, you should ensure it satisfies the three laws:+> * Isomorphism (to): tabulate . index ≡ identity+> * Isomorphism (from): index . tabulate ≡ identity+> * Right adjoint: tabulate . point ≡ point+> * Interchange tabulation: comap f . tabulate ≡ tabulate . comap f+-}++class Pointable t => Representable t where+ {-# MINIMAL (<#>), tabulate #-}+ type Representation t :: *+ -- | Infix and flipped version of 'index'+ (<#>) :: Representation t -> t a -> a+ -- Build with a function which describes value+ tabulate :: (Representation t -> a) -> t a+ -- | Prefix and flipped version of '<#>'+ index :: t a -> Representation t -> a+ index x f = f <#> x++instance Representable ((->) e) where+ type Representation ((->) e) = e+ (<#>) = (identity ?)+ tabulate = identity
Pandora/Pattern/Functor/Traversable.hs view
@@ -1,6 +1,6 @@ module Pandora.Pattern.Functor.Traversable (Traversable (..)) where -import Pandora.Core.Functor (type (:.:), type (><))+import Pandora.Core.Functor (type (:.), type (>)) import Pandora.Core.Morphism (identity, (.)) import Pandora.Pattern.Functor.Covariant (Covariant) import Pandora.Pattern.Functor.Applicative (Applicative)@@ -22,22 +22,22 @@ class Covariant t => Traversable t where {-# MINIMAL (->>) #-} -- | Infix version of 'traverse'- (->>) :: (Pointable u, Applicative u) => t a -> (a -> u b) -> u :.: t >< b+ (->>) :: (Pointable u, Applicative u) => t a -> (a -> u b) -> u :. t > b -- | Prefix version of '->>'- traverse :: (Pointable u, Applicative u) => (a -> u b) -> t a -> u :.: t >< b+ traverse :: (Pointable u, Applicative u) => (a -> u b) -> t a -> u :. t > b traverse f t = t ->> f -- | The dual of 'distribute'- sequence :: (Pointable u, Applicative u) => (t :.: u) a -> u :.: t >< a+ sequence :: (Pointable u, Applicative u) => (t :. u) a -> u :. t > a sequence t = t ->> identity -- | Infix versions of `traverse` with various nesting levels (->>>) :: (Pointable u, Applicative u, Traversable v)- => v :.: t >< a -> (a -> u b) -> u :.: v :.: t >< b+ => v :. t > a -> (a -> u b) -> u :. v :. t > b x ->>> f = (traverse . traverse) f x (->>>>) :: (Pointable u, Applicative u, Traversable v, Traversable w)- => w :.: v :.: t >< a -> (a -> u b) -> u :.: w :.: v :.: t >< b+ => w :. v :. t > a -> (a -> u b) -> u :. w :. v :. t > b x ->>>> f = (traverse . traverse . traverse) f x (->>>>>) :: (Pointable u, Applicative u, Traversable v, Traversable w, Traversable j)- => j :.: w :.: v :.: t >< a -> (a -> u b) -> u :.: j :.: w :.: v :.: t >< b+ => j :. w :. v :. t > a -> (a -> u b) -> u :. j :. w :. v :. t > b x ->>>>> f = (traverse . traverse . traverse . traverse) f x
Pandora/Pattern/Junction.hs view
@@ -1,9 +1,5 @@ module Pandora.Pattern.Junction (module Exports) where -import Pandora.Pattern.Junction.Schemes.UTU as Exports-import Pandora.Pattern.Junction.Schemes.UT as Exports-import Pandora.Pattern.Junction.Schemes.TUVW as Exports-import Pandora.Pattern.Junction.Schemes.TUV as Exports-import Pandora.Pattern.Junction.Schemes.TU as Exports+import Pandora.Pattern.Junction.Schemes as Exports import Pandora.Pattern.Junction.Transformer as Exports import Pandora.Pattern.Junction.Composition as Exports
+ Pandora/Pattern/Junction/Schemes.hs view
@@ -0,0 +1,7 @@+module Pandora.Pattern.Junction.Schemes (module Exports) where++import Pandora.Pattern.Junction.Schemes.UTU as Exports+import Pandora.Pattern.Junction.Schemes.UT as Exports+import Pandora.Pattern.Junction.Schemes.TUVW as Exports+import Pandora.Pattern.Junction.Schemes.TUV as Exports+import Pandora.Pattern.Junction.Schemes.TU as Exports
Pandora/Pattern/Junction/Schemes/TU.hs view
@@ -1,60 +1,10 @@ module Pandora.Pattern.Junction.Schemes.TU (TU (..)) where -import Pandora.Core.Functor (Variant (Co, Contra), type (:.:), type (><))-import Pandora.Core.Morphism ((.), ($))+import Pandora.Core.Functor (type (:.), type (>)) import Pandora.Pattern.Junction.Composition (Composition (Primary, unwrap))-import Pandora.Pattern.Functor.Covariant (Covariant ((<$>), (<$$>), comap))-import Pandora.Pattern.Functor.Contravariant (Contravariant ((>$<), (>$$<)))-import Pandora.Pattern.Functor.Extractable (Extractable (extract))-import Pandora.Pattern.Functor.Avoidable (Avoidable (empty))-import Pandora.Pattern.Functor.Pointable (Pointable (point))-import Pandora.Pattern.Functor.Alternative (Alternative ((<+>)))-import Pandora.Pattern.Functor.Applicative (Applicative ((<*>), apply))-import Pandora.Pattern.Functor.Traversable (Traversable ((->>), (->>>)))-import Pandora.Pattern.Functor.Distributive (Distributive ((>>-), distribute))-import Pandora.Pattern.Functor.Adjoint (Adjoint (phi, psi)) -newtype TU ct cu t u a = TU (t :.: u >< a)+newtype TU ct cu t u a = TU (t :. u > a) instance Composition (TU ct cu t u) where- type Primary (TU ct cu t u) a = t :.: u >< a+ type Primary (TU ct cu t u) a = t :. u > a unwrap (TU x) = x--instance (Covariant t, Covariant u) => Covariant (TU 'Co 'Co t u) where- f <$> TU x = TU $ f <$$> x--instance (Covariant t, Contravariant u) => Contravariant (TU 'Co 'Contra t u) where- f >$< TU x = TU $ (f >$<) <$> x--instance (Contravariant t, Covariant u) => Contravariant (TU 'Contra 'Co t u) where- f >$< TU x = TU $ (f <$>) >$< x--instance (Contravariant t, Contravariant u) => Covariant (TU 'Contra 'Contra t u) where- f <$> TU x = TU $ f >$$< x--instance (Pointable t, Pointable u) => Pointable (TU 'Co 'Co t u) where- point = TU . point . point--instance (Extractable t, Extractable u) => Extractable (TU 'Co 'Co t u) where- extract = extract . extract . unwrap--instance (Avoidable t, Covariant u) => Avoidable (TU 'Co 'Co t u) where- empty = TU empty--instance (Applicative t, Applicative u) => Applicative (TU 'Co 'Co t u) where- TU f <*> TU x = TU $ apply <$> f <*> x--instance (Alternative t, Covariant u) => Alternative (TU 'Co 'Co t u) where- TU x <+> TU y = TU $ x <+> y--instance (Traversable t, Traversable u) => Traversable (TU 'Co 'Co t u) where- TU x ->> f = TU <$> x ->>> f--instance (Distributive t, Distributive u) => Distributive (TU 'Co 'Co t u) where- x >>- f = TU . comap distribute . distribute $ unwrap . f <$> x--type (:-|:) t u = (Extractable t, Pointable t, Extractable u, Pointable u, Adjoint t u)--instance (t :-|: u, v :-|: w) => Adjoint (TU 'Co 'Co t v) (TU 'Co 'Co u w) where- phi f = point . f . point- psi f = extract . extract . comap f
Pandora/Pattern/Junction/Schemes/TUV.hs view
@@ -1,88 +1,10 @@ module Pandora.Pattern.Junction.Schemes.TUV (TUV (..)) where -import Pandora.Core.Functor (Variant (Co, Contra), type (:.:), type (><))-import Pandora.Core.Morphism ((.), ($))+import Pandora.Core.Functor (type (:.), type (>)) import Pandora.Pattern.Junction.Composition (Composition (Primary, unwrap))-import Pandora.Pattern.Functor.Covariant (Covariant ((<$>), (<$$>), (<$$$>), comap))-import Pandora.Pattern.Functor.Contravariant (Contravariant ((>$<), (>$$<), (>$$$<)), contramap)-import Pandora.Pattern.Functor.Extractable (Extractable (extract))-import Pandora.Pattern.Functor.Avoidable (Avoidable (empty))-import Pandora.Pattern.Functor.Pointable (Pointable (point))-import Pandora.Pattern.Functor.Alternative (Alternative ((<+>)))-import Pandora.Pattern.Functor.Applicative (Applicative ((<*>), apply))-import Pandora.Pattern.Functor.Traversable (Traversable ((->>), (->>>>)))-import Pandora.Pattern.Functor.Distributive (Distributive ((>>-), distribute))-import Pandora.Pattern.Functor.Adjoint (Adjoint (phi, psi)) -newtype TUV ct cu cv t u v a = TUV (t :.: u :.: v >< a)+newtype TUV ct cu cv t u v a = TUV (t :. u :. v > a) instance Composition (TUV ct cu cv t u v) where- type Primary (TUV ct cu cv t u v) a = t :.: u :.: v >< a+ type Primary (TUV ct cu cv t u v) a = t :. u :. v > a unwrap (TUV x) = x--instance (Covariant t, Covariant u, Covariant v)- => Covariant (TUV 'Co 'Co 'Co t u v) where- f <$> TUV x = TUV $ f <$$$> x--instance (Covariant t, Covariant u, Contravariant v)- => Contravariant (TUV 'Co 'Co 'Contra t u v) where- f >$< TUV x = TUV $ (f >$<) <$$> x--instance (Covariant t, Contravariant u, Covariant v)- => Contravariant (TUV 'Co 'Contra 'Co t u v) where- f >$< TUV x = TUV $ contramap (comap f) <$> x--instance (Contravariant t, Covariant u, Covariant v)- => Contravariant (TUV 'Contra 'Co 'Co t u v) where- f >$< TUV x = TUV $ (f <$$>) >$< x--instance (Contravariant t, Contravariant u, Covariant v)- => Covariant (TUV 'Contra 'Contra 'Co t u v) where- f <$> TUV x = TUV $ contramap (comap f) >$< x--instance (Covariant t, Contravariant u, Contravariant v)- => Covariant (TUV 'Co 'Contra 'Contra t u v) where- f <$> TUV x = TUV $ (f >$$<) <$> x--instance (Contravariant t, Covariant u, Contravariant v)- => Covariant (TUV 'Contra 'Co 'Contra t u v) where- f <$> TUV x = TUV $ comap (contramap f) >$< x--instance (Contravariant t, Contravariant u, Contravariant v)- => Contravariant (TUV 'Contra 'Contra 'Contra t u v) where- f >$< TUV x = TUV $ f >$$$< x--instance (Pointable t, Pointable u, Pointable v)- => Pointable (TUV 'Co 'Co 'Co t u v) where- point = TUV . point . point . point--instance (Extractable t, Extractable u, Extractable v)- => Extractable (TUV 'Co 'Co 'Co t u v) where- extract = extract . extract . extract . unwrap--instance (Avoidable t, Covariant u, Covariant v)- => Avoidable (TUV 'Co 'Co 'Co t u v) where- empty = TUV empty--instance (Applicative t, Applicative u, Applicative v)- => Applicative (TUV 'Co 'Co 'Co t u v) where- TUV f <*> TUV x = TUV $ ((apply <$>) . (apply <$$>) $ f) <*> x--instance (Alternative t, Covariant u, Covariant v)- => Alternative (TUV 'Co 'Co 'Co t u v) where- TUV x <+> TUV y = TUV $ x <+> y--instance (Traversable t, Traversable u, Traversable v)- => Traversable (TUV 'Co 'Co 'Co t u v) where- TUV x ->> f = TUV <$> x ->>>> f--instance (Distributive t, Distributive u, Distributive v)- => Distributive (TUV 'Co 'Co 'Co t u v) where- x >>- f = TUV . (distribute <$$>) . (distribute <$>) . distribute $ unwrap . f <$> x--type (:-|:) t u = (Extractable t, Pointable t, Extractable u, Pointable u, Adjoint t u)--instance (t :-|: w, v :-|: x, u :-|: y)- => Adjoint (TUV 'Co 'Co 'Co t v u) (TUV 'Co 'Co 'Co w x y) where- phi f = point . f . point- psi f = extract . extract . comap f
Pandora/Pattern/Junction/Schemes/TUVW.hs view
@@ -1,120 +1,10 @@ module Pandora.Pattern.Junction.Schemes.TUVW (TUVW (..)) where -import Pandora.Core.Functor (Variant (Co, Contra), type (:.:), type (><))-import Pandora.Core.Morphism ((.), ($))+import Pandora.Core.Functor (type (:.), type (>)) import Pandora.Pattern.Junction.Composition (Composition (Primary, unwrap))-import Pandora.Pattern.Functor.Covariant (Covariant ((<$>), (<$$>), (<$$$>), (<$$$$>), comap))-import Pandora.Pattern.Functor.Contravariant (Contravariant ((>$<), (>$$<), (>$$$<), (>$$$$<), contramap))-import Pandora.Pattern.Functor.Extractable (Extractable (extract))-import Pandora.Pattern.Functor.Avoidable (Avoidable (empty))-import Pandora.Pattern.Functor.Pointable (Pointable (point))-import Pandora.Pattern.Functor.Alternative (Alternative ((<+>)))-import Pandora.Pattern.Functor.Applicative (Applicative ((<*>), apply))-import Pandora.Pattern.Functor.Traversable (Traversable ((->>), (->>>>>)))-import Pandora.Pattern.Functor.Distributive (Distributive ((>>-), distribute))-import Pandora.Pattern.Functor.Adjoint (Adjoint (phi, psi)) -newtype TUVW ct cu cv cw t u v w a = TUVW (t :.: u :.: v :.: w >< a)+newtype TUVW ct cu cv cw t u v w a = TUVW (t :. u :. v :. w > a) instance Composition (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+ type Primary (TUVW ct cu cv cw t u v w) a = t :. u :. v :. w > a unwrap (TUVW x) = x--instance (Covariant t, Covariant u, Covariant v, Covariant w)- => Covariant (TUVW 'Co 'Co 'Co 'Co t u v w) where- f <$> TUVW x = TUVW $ f <$$$$> x--instance (Covariant t, Covariant u, Covariant v, Contravariant w)- => Contravariant (TUVW 'Co 'Co 'Co 'Contra t u v w) where- f >$< TUVW x = TUVW $ (f >$<) <$$$> x--instance (Covariant t, Covariant u, Contravariant v, Covariant w)- => Contravariant (TUVW 'Co 'Co 'Contra 'Co t u v w) where- f >$< TUVW x = TUVW $ (contramap (comap f)) <$$> x--instance (Covariant t, Contravariant u, Covariant v, Covariant w)- => Contravariant (TUVW 'Co 'Contra 'Co 'Co t u v w) where- f >$< TUVW x = TUVW $ (contramap (comap (comap f))) <$> x--instance (Contravariant t, Covariant u, Covariant v, Covariant w)- => Contravariant (TUVW 'Contra 'Co 'Co 'Co t u v w) where- f >$< TUVW x = TUVW $ (f <$$$>) >$< x--instance (Contravariant t, Contravariant u, Covariant v, Covariant w)- => Covariant (TUVW 'Contra 'Contra 'Co 'Co t u v w) where- f <$> TUVW x = TUVW $ (contramap . contramap . comap . comap $ f) x--instance (Covariant t, Contravariant u, Contravariant v, Covariant w)- => Covariant (TUVW 'Co 'Contra 'Contra 'Co t u v w) where- f <$> TUVW x = TUVW $ (comap . contramap . contramap . comap $ f) x--instance (Covariant t, Covariant u, Contravariant v, Contravariant w)- => Covariant (TUVW 'Co 'Co 'Contra 'Contra t u v w) where- f <$> TUVW x = TUVW $ (f >$$<) <$$> x--instance (Covariant t, Contravariant u, Covariant v, Contravariant w)- => Covariant (TUVW 'Co 'Contra 'Co 'Contra t u v w) where- f <$> TUVW x = TUVW $ (comap . contramap . comap . contramap $ f) x--instance (Contravariant t, Covariant u, Contravariant v, Covariant w)- => Covariant (TUVW 'Contra 'Co 'Contra 'Co t u v w) where- f <$> TUVW x = TUVW $ (contramap . comap . contramap . comap $ f) x--instance (Contravariant t, Covariant u, Covariant v, Contravariant w)- => Covariant (TUVW 'Contra 'Co 'Co 'Contra t u v w) where- f <$> TUVW x = TUVW $ (contramap . comap . comap . contramap $ f) x--instance (Contravariant t, Contravariant u, Contravariant v, Covariant w)- => Contravariant (TUVW 'Contra 'Contra 'Contra 'Co t u v w) where- f >$< TUVW x = TUVW $ (f <$>) >$$$< x--instance (Covariant t, Contravariant u, Contravariant v, Contravariant w)- => Contravariant (TUVW 'Co 'Contra 'Contra 'Contra t u v w) where- f >$< TUVW x = TUVW $ (f >$$$<) <$> x--instance (Contravariant t, Covariant u, Contravariant v, Contravariant w)- => Contravariant (TUVW 'Contra 'Co 'Contra 'Contra t u v w) where- f >$< TUVW x = TUVW $ (contramap . comap . contramap . contramap) f x--instance (Contravariant t, Contravariant u, Covariant v, Contravariant w)- => Contravariant (TUVW 'Contra 'Contra 'Co 'Contra t u v w) where- f >$< TUVW x = TUVW $ (contramap . contramap . comap . contramap) f x--instance (Contravariant t, Contravariant u, Contravariant v, Contravariant w)- => Covariant (TUVW 'Contra 'Contra 'Contra 'Contra t u v w) where- f <$> TUVW x = TUVW $ f >$$$$< x--instance (Pointable t, Pointable u, Pointable v, Pointable w)- => Pointable (TUVW 'Co 'Co 'Co 'Co t u v w) where- point = TUVW . point . point . point . point--instance (Extractable t, Extractable u, Extractable v, Extractable w)- => Extractable (TUVW 'Co 'Co 'Co 'Co t u v w) where- extract = extract . extract . extract . extract . unwrap--instance (Avoidable t, Covariant u, Covariant v, Covariant w)- => Avoidable (TUVW 'Co 'Co 'Co 'Co t u v w) where- empty = TUVW empty--instance (Applicative t, Applicative u, Applicative v, Applicative w)- => Applicative (TUVW 'Co 'Co 'Co 'Co t u v w) where- TUVW f <*> TUVW x = TUVW $ ((apply <$>) . (apply <$$>) . (apply <$$$>) $ f) <*> x--instance (Alternative t, Covariant u, Covariant v, Covariant w)- => Alternative (TUVW 'Co 'Co 'Co 'Co t u v w) where- TUVW x <+> TUVW y = TUVW $ x <+> y--instance (Traversable t, Traversable u, Traversable v, Traversable w)- => Traversable (TUVW 'Co 'Co 'Co 'Co t u v w) where- TUVW x ->> f = TUVW <$> x ->>>>> f--instance (Distributive t, Distributive u, Distributive v, Distributive w)- => Distributive (TUVW 'Co 'Co 'Co 'Co t u v w) where- x >>- f = TUVW . (distribute <$$$>) . (distribute <$$>) . (distribute <$>) . distribute $ unwrap . f <$> x--type (:-|:) t u = (Extractable t, Pointable t, Extractable u, Pointable u, Adjoint t u)--instance (t :-|: u, v :-|: w, q :-|: q, r :-|: s)- => Adjoint (TUVW 'Co 'Co 'Co 'Co t v q r) (TUVW 'Co 'Co 'Co 'Co u w q s) where- phi f = point . f . point- psi f = extract . extract . comap f
Pandora/Pattern/Junction/Schemes/UT.hs view
@@ -1,67 +1,10 @@ module Pandora.Pattern.Junction.Schemes.UT (UT (..)) where -import Pandora.Core.Functor (Variant (Co), type (:.:), type (><))-import Pandora.Core.Morphism ((.), ($))+import Pandora.Core.Functor (type (:.), type (>)) import Pandora.Pattern.Junction.Composition (Composition (Primary, unwrap))-import Pandora.Pattern.Functor.Covariant (Covariant ((<$>), (<$$>), comap))-import Pandora.Pattern.Functor.Pointable (Pointable (point))-import Pandora.Pattern.Functor.Extractable (Extractable (extract))-import Pandora.Pattern.Functor.Avoidable (Avoidable (empty))-import Pandora.Pattern.Functor.Alternative (Alternative ((<+>)))-import Pandora.Pattern.Functor.Applicative (Applicative ((<*>), apply))-import Pandora.Pattern.Functor.Traversable (Traversable ((->>), (->>>)))-import Pandora.Pattern.Functor.Distributive (Distributive ((>>-), distribute))-import Pandora.Pattern.Functor.Liftable (Liftable (lift))-import Pandora.Pattern.Functor.Lowerable (Lowerable (lower))-import Pandora.Pattern.Object.Setoid (Setoid ((==)))-import Pandora.Pattern.Object.Chain (Chain ((<=>)))-import Pandora.Pattern.Object.Semigroup (Semigroup ((+)))-import Pandora.Pattern.Object.Monoid (Monoid (zero)) -newtype UT ct cu t u a = UT (u :.: t >< a)+newtype UT ct cu t u a = UT (u :. t > a) instance Composition (UT ct cu t u) where- type Primary (UT ct cu t u) a = u :.: t >< a+ type Primary (UT ct cu t u) a = u :. t > a unwrap (UT x) = x--instance (Covariant t, Covariant u) => Covariant (UT 'Co 'Co t u) where- f <$> UT x = UT $ f <$$> x--instance (Pointable t, Pointable u) => Pointable (UT 'Co 'Co t u) where- point = UT . point . point--instance (Extractable t, Extractable u) => Extractable (UT 'Co 'Co t u) where- extract = extract . extract . unwrap--instance (Covariant t, Avoidable u) => Avoidable (UT 'Co 'Co t u) where- empty = UT empty--instance (Covariant t, Alternative u) => Alternative (UT 'Co 'Co t u) where- UT x <+> UT y = UT $ x <+> y--instance (Applicative t, Applicative u) => Applicative (UT 'Co 'Co t u) where- UT f <*> UT x = UT $ apply <$> f <*> x--instance Pointable t => Liftable (UT 'Co 'Co t) where- lift x = UT $ point <$> x--instance Extractable t => Lowerable (UT 'Co 'Co t) where- lower (UT x) = extract <$> x--instance (Traversable t, Traversable u) => Traversable (UT 'Co 'Co t u) where- UT x ->> f = UT <$> x ->>> f--instance (Distributive t, Distributive u) => Distributive (UT 'Co 'Co t u) where- x >>- f = UT . comap distribute . distribute $ unwrap . f <$> x--instance Setoid (u :.: t >< a) => Setoid (UT 'Co 'Co t u a) where- UT x == UT y = x == y--instance Chain (u :.: t >< a) => Chain (UT 'Co 'Co t u a) where- UT x <=> UT y = x <=> y--instance Semigroup (u :.: t >< a) => Semigroup (UT 'Co 'Co t u a) where- UT x + UT y = UT $ x + y--instance Monoid (u :.: t >< a) => Monoid (UT 'Co 'Co t u a) where- zero = UT zero
Pandora/Pattern/Junction/Schemes/UTU.hs view
@@ -1,67 +1,10 @@ module Pandora.Pattern.Junction.Schemes.UTU (UTU (..)) where -import Pandora.Core.Functor (Variant (Co), type (:.:), type (><))-import Pandora.Core.Morphism ((.), ($))+import Pandora.Core.Functor (type (:.), type (>)) import Pandora.Pattern.Junction.Composition (Composition (Primary, unwrap))-import Pandora.Pattern.Functor.Covariant (Covariant ((<$>), (<$$>), comap))-import Pandora.Pattern.Functor.Pointable (Pointable (point))-import Pandora.Pattern.Functor.Extractable (Extractable (extract))-import Pandora.Pattern.Functor.Avoidable (Avoidable (empty))-import Pandora.Pattern.Functor.Alternative (Alternative ((<+>)))-import Pandora.Pattern.Functor.Applicative (Applicative ((<*>), apply))-import Pandora.Pattern.Functor.Traversable (Traversable ((->>), (->>>)))-import Pandora.Pattern.Functor.Distributive (Distributive ((>>-), distribute))-import Pandora.Pattern.Functor.Liftable (Liftable (lift))-import Pandora.Pattern.Functor.Lowerable (Lowerable (lower))-import Pandora.Pattern.Object.Setoid (Setoid ((==)))-import Pandora.Pattern.Object.Chain (Chain ((<=>)))-import Pandora.Pattern.Object.Semigroup (Semigroup ((+)))-import Pandora.Pattern.Object.Monoid (Monoid (zero)) -newtype UTU ct cu t u a = UTU (u :.: t u >< a)+newtype UTU ct cu t u a = UTU (u :. t u > a) instance Composition (UTU ct cu t u) where- type Primary (UTU ct cu t u) a = u :.: t u >< a+ type Primary (UTU ct cu t u) a = u :. t u > a unwrap (UTU x) = x--instance (Covariant (t u), Covariant u) => Covariant (UTU 'Co 'Co t u) where- f <$> UTU x = UTU $ f <$$> x--instance (Pointable (t u), Pointable u) => Pointable (UTU 'Co 'Co t u) where- point = UTU . point . point--instance (Extractable (t u), Extractable u) => Extractable (UTU 'Co 'Co t u) where- extract = extract . extract . unwrap--instance (Covariant (t u), Avoidable u) => Avoidable (UTU 'Co 'Co t u) where- empty = UTU empty--instance (Covariant (t u), Alternative u) => Alternative (UTU 'Co 'Co t u) where- UTU x <+> UTU y = UTU $ x <+> y--instance (Applicative (t u), Applicative u) => Applicative (UTU 'Co 'Co t u) where- UTU f <*> UTU x = UTU $ apply <$> f <*> x--instance (Traversable (t u), Traversable u) => Traversable (UTU 'Co 'Co t u) where- UTU x ->> f = UTU <$> x ->>> f--instance (Distributive (t u), Distributive u) => Distributive (UTU 'Co 'Co t u) where- x >>- f = UTU . comap distribute . distribute $ unwrap . f <$> x--instance (forall u' . Pointable u', Liftable t) => Liftable (UTU 'Co 'Co t) where- lift = UTU . point . lift--instance (forall u' . Extractable u', Lowerable t) => Lowerable (UTU 'Co 'Co t) where- lower = lower . extract . unwrap--instance (forall u' . Setoid (u' :.: t u' >< a)) => Setoid (UTU 'Co 'Co t u a) where- UTU x == UTU y = x == y--instance (forall u' . Chain (u' :.: t u' >< a)) => Chain (UTU 'Co 'Co t u a) where- UTU x <=> UTU y = x <=> y--instance (forall u' . Semigroup (u' :.: t u' >< a)) => Semigroup (UTU 'Co 'Co t u a) where- UTU x + UTU y = UTU $ x + y--instance (forall u' . Monoid (u' :.: t u' >< a)) => Monoid (UTU 'Co 'Co t u a) where- zero = UTU zero
README.md view
@@ -14,9 +14,3 @@ * Library: http://hackage.haskell.org/package/semigroupoids * Library: http://hackage.haskell.org/package/transformers * Library: http://hackage.haskell.org/package/invariant--## Diagram of functor patterns:---## Diagram of object patterns:-
pandora.cabal view
@@ -1,5 +1,5 @@ name: pandora-version: 0.1.9+version: 0.2.0 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@@ -85,11 +85,14 @@ Pandora.Pattern.Functor.Lowerable Pandora.Pattern.Functor.Monad Pandora.Pattern.Functor.Pointable+ Pandora.Pattern.Functor.Representable Pandora.Pattern.Functor.Traversable+ Pandora.Pattern.Functor.Divariant -- Typeclassess about functor junctions Pandora.Pattern.Junction Pandora.Pattern.Junction.Composition Pandora.Pattern.Junction.Transformer+ Pandora.Pattern.Junction.Schemes Pandora.Pattern.Junction.Schemes.TU Pandora.Pattern.Junction.Schemes.TUV Pandora.Pattern.Junction.Schemes.TUVW