{-# OPTIONS_GHC -fno-warn-orphans #-} module Pandora.Paradigm.Primary (module Exports) where import Pandora.Paradigm.Primary.Transformer as Exports import Pandora.Paradigm.Primary.Functor as Exports import Pandora.Paradigm.Primary.Object as Exports import Pandora.Core.Functor (type (:=)) import Pandora.Pattern.Category (Category ((.), ($), identity)) import Pandora.Pattern.Functor.Covariant (Covariant ((<$>))) import Pandora.Pattern.Functor.Contravariant (Contravariant ((>$<))) import Pandora.Paradigm.Controlflow.Effect.Interpreted (run, (||=)) import Pandora.Paradigm.Schemes.TU (TU (TU), type (<:.>)) import Pandora.Paradigm.Schemes.T_U (type (<:.:>)) import Pandora.Paradigm.Structure.Ability.Morphable (Morphable (Morphing, morphing), Morph (Into), premorph) instance Category (Flip (->)) where identity :: Flip (->) a a identity = (a -> a) -> Flip (->) a a forall (v :: * -> * -> *) a e. v e a -> Flip v a e Flip a -> a forall (m :: * -> * -> *) a. Category m => m a a identity Flip c -> b f . :: Flip (->) b c -> Flip (->) a b -> Flip (->) a c . Flip b -> a g = (c -> a) -> Flip (->) a c forall (v :: * -> * -> *) a e. v e a -> Flip v a e Flip ((c -> a) -> Flip (->) a c) -> (c -> a) -> Flip (->) a c forall (m :: * -> * -> *). Category m => m ~~> m $ \c x -> b -> a g (c -> b f c x) instance Contravariant (Flip (->) r) where a -> b f >$< :: (a -> b) -> Flip (->) r b -> Flip (->) r a >$< Flip (->) r b g = ((b -> r) -> (a -> b) -> a -> r forall (t :: * -> *) a b. Covariant t => (a -> b) -> t a -> t b <$> a -> b f) (Primary (Flip (->) r) b -> Primary (Flip (->) r) a) -> Flip (->) r b -> Flip (->) r a forall (t :: * -> *) (u :: * -> *) a b. (Interpreted t, Interpreted u) => (Primary t a -> Primary u b) -> t a -> u b ||= Flip (->) r b g instance Morphable (Into Maybe) (Conclusion e) where type Morphing (Into Maybe) (Conclusion e) = Maybe morphing :: (<:.>) (Tagged ('Into Maybe)) (Conclusion e) a -> Morphing ('Into Maybe) (Conclusion e) a morphing = (e -> Maybe a) -> (a -> Maybe a) -> Conclusion e a -> Maybe a forall e r a. (e -> r) -> (a -> r) -> Conclusion e a -> r conclusion (Maybe a forall a. Maybe a Nothing Maybe a -> e -> Maybe a forall a b. a -> b -> a !) a -> Maybe a forall a. a -> Maybe a Just (Conclusion e a -> Maybe a) -> ((<:.>) (Tagged ('Into Maybe)) (Conclusion e) a -> Conclusion e a) -> (<:.>) (Tagged ('Into Maybe)) (Conclusion e) a -> Maybe a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (<:.>) (Tagged ('Into Maybe)) (Conclusion e) a -> Conclusion e a forall k (f :: k) (t :: * -> *). Morphable f t => (Tagged f <:.> t) ~> t premorph instance Morphable (Into (Conclusion e)) Maybe where type Morphing (Into (Conclusion e)) Maybe = (->) e <:.> Conclusion e morphing :: (<:.>) (Tagged ('Into (Conclusion e))) Maybe a -> Morphing ('Into (Conclusion e)) Maybe a morphing ((<:.>) (Tagged ('Into (Conclusion e))) Maybe a -> Maybe a forall k (f :: k) (t :: * -> *). Morphable f t => (Tagged f <:.> t) ~> t premorph -> Just a x) = (((->) e :. Conclusion e) := a) -> TU Covariant Covariant ((->) e) (Conclusion e) a forall k k k k (ct :: k) (cu :: k) (t :: k -> *) (u :: k -> k) (a :: k). ((t :. u) := a) -> TU ct cu t u a TU ((((->) e :. Conclusion e) := a) -> TU Covariant Covariant ((->) e) (Conclusion e) a) -> (((->) e :. Conclusion e) := a) -> TU Covariant Covariant ((->) e) (Conclusion e) a forall (m :: * -> * -> *). Category m => m ~~> m $ \e _ -> a -> Conclusion e a forall e a. a -> Conclusion e a Success a x morphing ((<:.>) (Tagged ('Into (Conclusion e))) Maybe a -> Maybe a forall k (f :: k) (t :: * -> *). Morphable f t => (Tagged f <:.> t) ~> t premorph -> Maybe a Nothing) = (((->) e :. Conclusion e) := a) -> TU Covariant Covariant ((->) e) (Conclusion e) a forall k k k k (ct :: k) (cu :: k) (t :: k -> *) (u :: k -> k) (a :: k). ((t :. u) := a) -> TU ct cu t u a TU ((((->) e :. Conclusion e) := a) -> TU Covariant Covariant ((->) e) (Conclusion e) a) -> (((->) e :. Conclusion e) := a) -> TU Covariant Covariant ((->) e) (Conclusion e) a forall (m :: * -> * -> *). Category m => m ~~> m $ \e e -> ((->) e :. Conclusion e) := a forall e a. e -> Conclusion e a Failure e e instance Morphable (Into (Flip Conclusion e)) Maybe where type Morphing (Into (Flip Conclusion e)) Maybe = (->) e <:.> Flip Conclusion e morphing :: (<:.>) (Tagged ('Into (Flip Conclusion e))) Maybe a -> Morphing ('Into (Flip Conclusion e)) Maybe a morphing (Maybe a -> Maybe a forall (t :: * -> *) a. Interpreted t => t a -> Primary t a run (Maybe a -> Maybe a) -> ((<:.>) (Tagged ('Into (Flip Conclusion e))) Maybe a -> Maybe a) -> (<:.>) (Tagged ('Into (Flip Conclusion e))) Maybe a -> Maybe a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (<:.>) (Tagged ('Into (Flip Conclusion e))) Maybe a -> Maybe a forall k (f :: k) (t :: * -> *). Morphable f t => (Tagged f <:.> t) ~> t premorph -> Just a x) = (((->) e :. Flip Conclusion e) := a) -> TU Covariant Covariant ((->) e) (Flip Conclusion e) a forall k k k k (ct :: k) (cu :: k) (t :: k -> *) (u :: k -> k) (a :: k). ((t :. u) := a) -> TU ct cu t u a TU ((((->) e :. Flip Conclusion e) := a) -> TU Covariant Covariant ((->) e) (Flip Conclusion e) a) -> (((->) e :. Flip Conclusion e) := a) -> TU Covariant Covariant ((->) e) (Flip Conclusion e) a forall (m :: * -> * -> *). Category m => m ~~> m $ \e _ -> Conclusion a e -> Flip Conclusion e a forall (v :: * -> * -> *) a e. v e a -> Flip v a e Flip (Conclusion a e -> Flip Conclusion e a) -> Conclusion a e -> Flip Conclusion e a forall (m :: * -> * -> *). Category m => m ~~> m $ a -> Conclusion a e forall e a. e -> Conclusion e a Failure a x morphing (Maybe a -> Maybe a forall (t :: * -> *) a. Interpreted t => t a -> Primary t a run (Maybe a -> Maybe a) -> ((<:.>) (Tagged ('Into (Flip Conclusion e))) Maybe a -> Maybe a) -> (<:.>) (Tagged ('Into (Flip Conclusion e))) Maybe a -> Maybe a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (<:.>) (Tagged ('Into (Flip Conclusion e))) Maybe a -> Maybe a forall k (f :: k) (t :: * -> *). Morphable f t => (Tagged f <:.> t) ~> t premorph -> Maybe a Nothing) = (((->) e :. Flip Conclusion e) := a) -> TU Covariant Covariant ((->) e) (Flip Conclusion e) a forall k k k k (ct :: k) (cu :: k) (t :: k -> *) (u :: k -> k) (a :: k). ((t :. u) := a) -> TU ct cu t u a TU ((((->) e :. Flip Conclusion e) := a) -> TU Covariant Covariant ((->) e) (Flip Conclusion e) a) -> (((->) e :. Flip Conclusion e) := a) -> TU Covariant Covariant ((->) e) (Flip Conclusion e) a forall (m :: * -> * -> *). Category m => m ~~> m $ Conclusion a e -> Flip Conclusion e a forall (v :: * -> * -> *) a e. v e a -> Flip v a e Flip (Conclusion a e -> Flip Conclusion e a) -> (e -> Conclusion a e) -> ((->) e :. Flip Conclusion e) := a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . e -> Conclusion a e forall e a. a -> Conclusion e a Success instance Morphable (Into (Left Maybe)) Wye where type Morphing (Into (Left Maybe)) Wye = Maybe morphing :: (<:.>) (Tagged ('Into ('Left Maybe))) Wye a -> Morphing ('Into ('Left Maybe)) Wye a morphing ((<:.>) (Tagged ('Into ('Left Maybe))) Wye a -> Wye a forall k (f :: k) (t :: * -> *). Morphable f t => (Tagged f <:.> t) ~> t premorph -> Both a ls a _) = a -> Maybe a forall a. a -> Maybe a Just a ls morphing ((<:.>) (Tagged ('Into ('Left Maybe))) Wye a -> Wye a forall k (f :: k) (t :: * -> *). Morphable f t => (Tagged f <:.> t) ~> t premorph -> Left a ls) = a -> Maybe a forall a. a -> Maybe a Just a ls morphing ((<:.>) (Tagged ('Into ('Left Maybe))) Wye a -> Wye a forall k (f :: k) (t :: * -> *). Morphable f t => (Tagged f <:.> t) ~> t premorph -> Right a _) = Morphing ('Into ('Left Maybe)) Wye a forall a. Maybe a Nothing morphing ((<:.>) (Tagged ('Into ('Left Maybe))) Wye a -> Wye a forall k (f :: k) (t :: * -> *). Morphable f t => (Tagged f <:.> t) ~> t premorph -> Wye a End) = Morphing ('Into ('Left Maybe)) Wye a forall a. Maybe a Nothing instance Morphable (Into (Right Maybe)) Wye where type Morphing (Into (Right Maybe)) Wye = Maybe morphing :: (<:.>) (Tagged ('Into ('Right Maybe))) Wye a -> Morphing ('Into ('Right Maybe)) Wye a morphing ((<:.>) (Tagged ('Into ('Right Maybe))) Wye a -> Wye a forall k (f :: k) (t :: * -> *). Morphable f t => (Tagged f <:.> t) ~> t premorph -> Both a _ a rs) = a -> Maybe a forall a. a -> Maybe a Just a rs morphing ((<:.>) (Tagged ('Into ('Right Maybe))) Wye a -> Wye a forall k (f :: k) (t :: * -> *). Morphable f t => (Tagged f <:.> t) ~> t premorph -> Left a _) = Morphing ('Into ('Right Maybe)) Wye a forall a. Maybe a Nothing morphing ((<:.>) (Tagged ('Into ('Right Maybe))) Wye a -> Wye a forall k (f :: k) (t :: * -> *). Morphable f t => (Tagged f <:.> t) ~> t premorph -> Right a rs) = a -> Maybe a forall a. a -> Maybe a Just a rs morphing ((<:.>) (Tagged ('Into ('Right Maybe))) Wye a -> Wye a forall k (f :: k) (t :: * -> *). Morphable f t => (Tagged f <:.> t) ~> t premorph -> Wye a End) = Morphing ('Into ('Right Maybe)) Wye a forall a. Maybe a Nothing instance Morphable (Into (This Maybe)) (These e) where type Morphing (Into (This Maybe)) (These e) = Maybe morphing :: (<:.>) (Tagged ('Into ('This Maybe))) (These e) a -> Morphing ('Into ('This Maybe)) (These e) a morphing ((<:.>) (Tagged ('Into ('This Maybe))) (These e) a -> These e a forall k (f :: k) (t :: * -> *). Morphable f t => (Tagged f <:.> t) ~> t premorph -> This a x) = a -> Maybe a forall a. a -> Maybe a Just a x morphing ((<:.>) (Tagged ('Into ('This Maybe))) (These e) a -> These e a forall k (f :: k) (t :: * -> *). Morphable f t => (Tagged f <:.> t) ~> t premorph -> That e _) = Morphing ('Into ('This Maybe)) (These e) a forall a. Maybe a Nothing morphing ((<:.>) (Tagged ('Into ('This Maybe))) (These e) a -> These e a forall k (f :: k) (t :: * -> *). Morphable f t => (Tagged f <:.> t) ~> t premorph -> These e _ a x) = a -> Maybe a forall a. a -> Maybe a Just a x instance Morphable (Into (That Maybe)) (Flip These a) where type Morphing (Into (That Maybe)) (Flip These a) = Maybe morphing :: (<:.>) (Tagged ('Into ('That Maybe))) (Flip These a) a -> Morphing ('Into ('That Maybe)) (Flip These a) a morphing (Flip These a a -> These a a forall (t :: * -> *) a. Interpreted t => t a -> Primary t a run (Flip These a a -> These a a) -> ((<:.>) (Tagged ('Into ('That Maybe))) (Flip These a) a -> Flip These a a) -> (<:.>) (Tagged ('Into ('That Maybe))) (Flip These a) a -> These a a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (<:.>) (Tagged ('Into ('That Maybe))) (Flip These a) a -> Flip These a a forall k (f :: k) (t :: * -> *). Morphable f t => (Tagged f <:.> t) ~> t premorph -> This a _) = Morphing ('Into ('That Maybe)) (Flip These a) a forall a. Maybe a Nothing morphing (Flip These a a -> These a a forall (t :: * -> *) a. Interpreted t => t a -> Primary t a run (Flip These a a -> These a a) -> ((<:.>) (Tagged ('Into ('That Maybe))) (Flip These a) a -> Flip These a a) -> (<:.>) (Tagged ('Into ('That Maybe))) (Flip These a) a -> These a a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (<:.>) (Tagged ('Into ('That Maybe))) (Flip These a) a -> Flip These a a forall k (f :: k) (t :: * -> *). Morphable f t => (Tagged f <:.> t) ~> t premorph -> That a x) = a -> Maybe a forall a. a -> Maybe a Just a x morphing (Flip These a a -> These a a forall (t :: * -> *) a. Interpreted t => t a -> Primary t a run (Flip These a a -> These a a) -> ((<:.>) (Tagged ('Into ('That Maybe))) (Flip These a) a -> Flip These a a) -> (<:.>) (Tagged ('Into ('That Maybe))) (Flip These a) a -> These a a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (<:.>) (Tagged ('Into ('That Maybe))) (Flip These a) a -> Flip These a a forall k (f :: k) (t :: * -> *). Morphable f t => (Tagged f <:.> t) ~> t premorph -> These a y a _) = a -> Maybe a forall a. a -> Maybe a Just a y instance Morphable (Into (Here Maybe)) (Flip Wedge a) where type Morphing (Into (Here Maybe)) (Flip Wedge a) = Maybe morphing :: (<:.>) (Tagged ('Into ('Here Maybe))) (Flip Wedge a) a -> Morphing ('Into ('Here Maybe)) (Flip Wedge a) a morphing (Flip Wedge a a -> Wedge a a forall (t :: * -> *) a. Interpreted t => t a -> Primary t a run (Flip Wedge a a -> Wedge a a) -> ((<:.>) (Tagged ('Into ('Here Maybe))) (Flip Wedge a) a -> Flip Wedge a a) -> (<:.>) (Tagged ('Into ('Here Maybe))) (Flip Wedge a) a -> Wedge a a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (<:.>) (Tagged ('Into ('Here Maybe))) (Flip Wedge a) a -> Flip Wedge a a forall k (f :: k) (t :: * -> *). Morphable f t => (Tagged f <:.> t) ~> t premorph -> Wedge a a Nowhere) = Morphing ('Into ('Here Maybe)) (Flip Wedge a) a forall a. Maybe a Nothing morphing (Flip Wedge a a -> Wedge a a forall (t :: * -> *) a. Interpreted t => t a -> Primary t a run (Flip Wedge a a -> Wedge a a) -> ((<:.>) (Tagged ('Into ('Here Maybe))) (Flip Wedge a) a -> Flip Wedge a a) -> (<:.>) (Tagged ('Into ('Here Maybe))) (Flip Wedge a) a -> Wedge a a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (<:.>) (Tagged ('Into ('Here Maybe))) (Flip Wedge a) a -> Flip Wedge a a forall k (f :: k) (t :: * -> *). Morphable f t => (Tagged f <:.> t) ~> t premorph -> Here a x) = a -> Maybe a forall a. a -> Maybe a Just a x morphing (Flip Wedge a a -> Wedge a a forall (t :: * -> *) a. Interpreted t => t a -> Primary t a run (Flip Wedge a a -> Wedge a a) -> ((<:.>) (Tagged ('Into ('Here Maybe))) (Flip Wedge a) a -> Flip Wedge a a) -> (<:.>) (Tagged ('Into ('Here Maybe))) (Flip Wedge a) a -> Wedge a a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (<:.>) (Tagged ('Into ('Here Maybe))) (Flip Wedge a) a -> Flip Wedge a a forall k (f :: k) (t :: * -> *). Morphable f t => (Tagged f <:.> t) ~> t premorph -> There a _) = Morphing ('Into ('Here Maybe)) (Flip Wedge a) a forall a. Maybe a Nothing instance Morphable (Into (There Maybe)) (Wedge e) where type Morphing (Into (There Maybe)) (Wedge e) = Maybe morphing :: (<:.>) (Tagged ('Into ('There Maybe))) (Wedge e) a -> Morphing ('Into ('There Maybe)) (Wedge e) a morphing ((<:.>) (Tagged ('Into ('There Maybe))) (Wedge e) a -> Wedge e a forall k (f :: k) (t :: * -> *). Morphable f t => (Tagged f <:.> t) ~> t premorph -> Wedge e a Nowhere) = Morphing ('Into ('There Maybe)) (Wedge e) a forall a. Maybe a Nothing morphing ((<:.>) (Tagged ('Into ('There Maybe))) (Wedge e) a -> Wedge e a forall k (f :: k) (t :: * -> *). Morphable f t => (Tagged f <:.> t) ~> t premorph -> Here e _) = Morphing ('Into ('There Maybe)) (Wedge e) a forall a. Maybe a Nothing morphing ((<:.>) (Tagged ('Into ('There Maybe))) (Wedge e) a -> Wedge e a forall k (f :: k) (t :: * -> *). Morphable f t => (Tagged f <:.> t) ~> t premorph -> There a x) = a -> Maybe a forall a. a -> Maybe a Just a x instance Morphable (Into Wye) (Maybe <:.:> Maybe := (:*:)) where type Morphing (Into Wye) (Maybe <:.:> Maybe := (:*:)) = Wye morphing :: (<:.>) (Tagged ('Into Wye)) ((Maybe <:.:> Maybe) := (:*:)) a -> Morphing ('Into Wye) ((Maybe <:.:> Maybe) := (:*:)) a morphing ((:=) (Maybe <:.:> Maybe) (:*:) a -> Product (Maybe a) (Maybe a) forall (t :: * -> *) a. Interpreted t => t a -> Primary t a run ((:=) (Maybe <:.:> Maybe) (:*:) a -> Product (Maybe a) (Maybe a)) -> ((<:.>) (Tagged ('Into Wye)) ((Maybe <:.:> Maybe) := (:*:)) a -> (:=) (Maybe <:.:> Maybe) (:*:) a) -> (<:.>) (Tagged ('Into Wye)) ((Maybe <:.:> Maybe) := (:*:)) a -> Product (Maybe a) (Maybe a) forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (<:.>) (Tagged ('Into Wye)) ((Maybe <:.:> Maybe) := (:*:)) a -> (:=) (Maybe <:.:> Maybe) (:*:) a forall k (f :: k) (t :: * -> *). Morphable f t => (Tagged f <:.> t) ~> t premorph -> Just a x :*: Just a y) = a -> a -> Wye a forall a. a -> a -> Wye a Both a x a y morphing ((:=) (Maybe <:.:> Maybe) (:*:) a -> Product (Maybe a) (Maybe a) forall (t :: * -> *) a. Interpreted t => t a -> Primary t a run ((:=) (Maybe <:.:> Maybe) (:*:) a -> Product (Maybe a) (Maybe a)) -> ((<:.>) (Tagged ('Into Wye)) ((Maybe <:.:> Maybe) := (:*:)) a -> (:=) (Maybe <:.:> Maybe) (:*:) a) -> (<:.>) (Tagged ('Into Wye)) ((Maybe <:.:> Maybe) := (:*:)) a -> Product (Maybe a) (Maybe a) forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (<:.>) (Tagged ('Into Wye)) ((Maybe <:.:> Maybe) := (:*:)) a -> (:=) (Maybe <:.:> Maybe) (:*:) a forall k (f :: k) (t :: * -> *). Morphable f t => (Tagged f <:.> t) ~> t premorph -> Maybe a Nothing :*: Just a y) = a -> Wye a forall a. a -> Wye a Right a y morphing ((:=) (Maybe <:.:> Maybe) (:*:) a -> Product (Maybe a) (Maybe a) forall (t :: * -> *) a. Interpreted t => t a -> Primary t a run ((:=) (Maybe <:.:> Maybe) (:*:) a -> Product (Maybe a) (Maybe a)) -> ((<:.>) (Tagged ('Into Wye)) ((Maybe <:.:> Maybe) := (:*:)) a -> (:=) (Maybe <:.:> Maybe) (:*:) a) -> (<:.>) (Tagged ('Into Wye)) ((Maybe <:.:> Maybe) := (:*:)) a -> Product (Maybe a) (Maybe a) forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (<:.>) (Tagged ('Into Wye)) ((Maybe <:.:> Maybe) := (:*:)) a -> (:=) (Maybe <:.:> Maybe) (:*:) a forall k (f :: k) (t :: * -> *). Morphable f t => (Tagged f <:.> t) ~> t premorph -> Just a x :*: Maybe a Nothing) = a -> Wye a forall a. a -> Wye a Left a x morphing ((:=) (Maybe <:.:> Maybe) (:*:) a -> Product (Maybe a) (Maybe a) forall (t :: * -> *) a. Interpreted t => t a -> Primary t a run ((:=) (Maybe <:.:> Maybe) (:*:) a -> Product (Maybe a) (Maybe a)) -> ((<:.>) (Tagged ('Into Wye)) ((Maybe <:.:> Maybe) := (:*:)) a -> (:=) (Maybe <:.:> Maybe) (:*:) a) -> (<:.>) (Tagged ('Into Wye)) ((Maybe <:.:> Maybe) := (:*:)) a -> Product (Maybe a) (Maybe a) forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (<:.>) (Tagged ('Into Wye)) ((Maybe <:.:> Maybe) := (:*:)) a -> (:=) (Maybe <:.:> Maybe) (:*:) a forall k (f :: k) (t :: * -> *). Morphable f t => (Tagged f <:.> t) ~> t premorph -> Maybe a Nothing :*: Maybe a Nothing) = Morphing ('Into Wye) ((Maybe <:.:> Maybe) := (:*:)) a forall a. Wye a End