{-# OPTIONS_GHC -fno-warn-orphans #-} module Pandora.Paradigm.Primary (module Exports) where import Pandora.Paradigm.Primary.Linear as Exports import Pandora.Paradigm.Primary.Transformer as Exports import Pandora.Paradigm.Primary.Functor as Exports import Pandora.Paradigm.Primary.Object as Exports import Pandora.Paradigm.Primary.Algebraic as Exports import Pandora.Core.Functor (type (:=)) import Pandora.Pattern.Semigroupoid (Semigroupoid ((.))) import Pandora.Pattern.Category (Category (($), (#))) import Pandora.Pattern.Functor.Covariant (Covariant ((-<$>-))) import Pandora.Pattern.Functor.Adjoint (Adjoint ((|-), (-|))) import Pandora.Pattern.Transformer.Liftable (lift) import Pandora.Pattern.Transformer.Lowerable (lower) import Pandora.Paradigm.Controlflow.Effect.Interpreted (run) import Pandora.Paradigm.Inventory.Store (Store (Store)) import Pandora.Paradigm.Schemes (TU (TU), P_Q_T (P_Q_T), type (<:.>), type (<:.:>)) import Pandora.Paradigm.Structure.Ability.Monotonic (Monotonic (resolve)) import Pandora.Paradigm.Structure.Ability.Morphable (Morphable (Morphing, morphing), Morph (Into), premorph) import Pandora.Paradigm.Structure.Ability.Substructure (Substructure (Available, Substance, substructure)) instance Adjoint (->) (->) (Flip (:*:) s) ((->) s) where Flip (:*:) s a -> b f -| :: (Flip (:*:) s a -> b) -> a -> s -> b -| a x = \s s -> Flip (:*:) s a -> b f (Flip (:*:) s a -> b) -> Flip (:*:) s a -> b forall (m :: * -> * -> *) a b. Category m => m (m a b) (m a b) $ (a :*: s) -> Flip (:*:) s a forall (v :: * -> * -> *) a e. v e a -> Flip v a e Flip ((a :*: s) -> Flip (:*:) s a) -> (a :*: s) -> Flip (:*:) s a forall (m :: * -> * -> *) a b. Category m => m (m a b) (m a b) $ a x a -> s -> a :*: s forall s a. s -> a -> s :*: a :*: s s a -> s -> b f |- :: (a -> s -> b) -> Flip (:*:) s a -> b |- Flip (a x :*: s s) = a -> s -> b f a x s s 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. Semigroupoid m => m b c -> m a b -> m a c . (<:.>) (Tagged ('Into Maybe)) (Conclusion e) a -> Conclusion e a forall k (mod :: k) (struct :: * -> *). Morphable mod struct => (Tagged mod <:.> struct) ~> struct 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 (mod :: k) (struct :: * -> *). Morphable mod struct => (Tagged mod <:.> struct) ~> struct 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 :: * -> * -> *) a b. Category m => m (m a b) (m a b) $ \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 (mod :: k) (struct :: * -> *). Morphable mod struct => (Tagged mod <:.> struct) ~> struct 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 :: * -> * -> *) a b. Category m => m (m a b) (m a b) $ \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. Semigroupoid m => m b c -> m a b -> m a c . (<:.>) (Tagged ('Into (Flip Conclusion e))) Maybe a -> Maybe a forall k (mod :: k) (struct :: * -> *). Morphable mod struct => (Tagged mod <:.> struct) ~> struct 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 :: * -> * -> *) a b. Category m => m (m a b) (m a b) $ \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 :: * -> * -> *) a b. Category m => m (m a b) (m a b) $ 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. Semigroupoid m => m b c -> m a b -> m a c . (<:.>) (Tagged ('Into (Flip Conclusion e))) Maybe a -> Maybe a forall k (mod :: k) (struct :: * -> *). Morphable mod struct => (Tagged mod <:.> struct) ~> struct 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 :: * -> * -> *) a b. Category m => m (m a b) (m a b) $ 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. Semigroupoid 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 (mod :: k) (struct :: * -> *). Morphable mod struct => (Tagged mod <:.> struct) ~> struct 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 (mod :: k) (struct :: * -> *). Morphable mod struct => (Tagged mod <:.> struct) ~> struct 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 (mod :: k) (struct :: * -> *). Morphable mod struct => (Tagged mod <:.> struct) ~> struct 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 (mod :: k) (struct :: * -> *). Morphable mod struct => (Tagged mod <:.> struct) ~> struct 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 (mod :: k) (struct :: * -> *). Morphable mod struct => (Tagged mod <:.> struct) ~> struct 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 (mod :: k) (struct :: * -> *). Morphable mod struct => (Tagged mod <:.> struct) ~> struct 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 (mod :: k) (struct :: * -> *). Morphable mod struct => (Tagged mod <:.> struct) ~> struct 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 (mod :: k) (struct :: * -> *). Morphable mod struct => (Tagged mod <:.> struct) ~> struct 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 (mod :: k) (struct :: * -> *). Morphable mod struct => (Tagged mod <:.> struct) ~> struct 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 (mod :: k) (struct :: * -> *). Morphable mod struct => (Tagged mod <:.> struct) ~> struct 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 (mod :: k) (struct :: * -> *). Morphable mod struct => (Tagged mod <:.> struct) ~> struct 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. Semigroupoid m => m b c -> m a b -> m a c . (<:.>) (Tagged ('Into ('That Maybe))) (Flip These a) a -> Flip These a a forall k (mod :: k) (struct :: * -> *). Morphable mod struct => (Tagged mod <:.> struct) ~> struct 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. Semigroupoid m => m b c -> m a b -> m a c . (<:.>) (Tagged ('Into ('That Maybe))) (Flip These a) a -> Flip These a a forall k (mod :: k) (struct :: * -> *). Morphable mod struct => (Tagged mod <:.> struct) ~> struct 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. Semigroupoid m => m b c -> m a b -> m a c . (<:.>) (Tagged ('Into ('That Maybe))) (Flip These a) a -> Flip These a a forall k (mod :: k) (struct :: * -> *). Morphable mod struct => (Tagged mod <:.> struct) ~> struct 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. Semigroupoid m => m b c -> m a b -> m a c . (<:.>) (Tagged ('Into ('Here Maybe))) (Flip Wedge a) a -> Flip Wedge a a forall k (mod :: k) (struct :: * -> *). Morphable mod struct => (Tagged mod <:.> struct) ~> struct 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. Semigroupoid m => m b c -> m a b -> m a c . (<:.>) (Tagged ('Into ('Here Maybe))) (Flip Wedge a) a -> Flip Wedge a a forall k (mod :: k) (struct :: * -> *). Morphable mod struct => (Tagged mod <:.> struct) ~> struct 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. Semigroupoid m => m b c -> m a b -> m a c . (<:.>) (Tagged ('Into ('Here Maybe))) (Flip Wedge a) a -> Flip Wedge a a forall k (mod :: k) (struct :: * -> *). Morphable mod struct => (Tagged mod <:.> struct) ~> struct 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 (mod :: k) (struct :: * -> *). Morphable mod struct => (Tagged mod <:.> struct) ~> struct 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 (mod :: k) (struct :: * -> *). Morphable mod struct => (Tagged mod <:.> struct) ~> struct 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 (mod :: k) (struct :: * -> *). Morphable mod struct => (Tagged mod <:.> struct) ~> struct 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 -> Maybe a :*: Maybe a forall (t :: * -> *) a. Interpreted t => t a -> Primary t a run ((:=) (Maybe <:.:> Maybe) (:*:) a -> Maybe a :*: Maybe a) -> ((<:.>) (Tagged ('Into Wye)) ((Maybe <:.:> Maybe) := (:*:)) a -> (:=) (Maybe <:.:> Maybe) (:*:) a) -> (<:.>) (Tagged ('Into Wye)) ((Maybe <:.:> Maybe) := (:*:)) a -> Maybe a :*: Maybe a forall (m :: * -> * -> *) b c a. Semigroupoid m => m b c -> m a b -> m a c . (<:.>) (Tagged ('Into Wye)) ((Maybe <:.:> Maybe) := (:*:)) a -> (:=) (Maybe <:.:> Maybe) (:*:) a forall k (mod :: k) (struct :: * -> *). Morphable mod struct => (Tagged mod <:.> struct) ~> struct 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 -> Maybe a :*: Maybe a forall (t :: * -> *) a. Interpreted t => t a -> Primary t a run ((:=) (Maybe <:.:> Maybe) (:*:) a -> Maybe a :*: Maybe a) -> ((<:.>) (Tagged ('Into Wye)) ((Maybe <:.:> Maybe) := (:*:)) a -> (:=) (Maybe <:.:> Maybe) (:*:) a) -> (<:.>) (Tagged ('Into Wye)) ((Maybe <:.:> Maybe) := (:*:)) a -> Maybe a :*: Maybe a forall (m :: * -> * -> *) b c a. Semigroupoid m => m b c -> m a b -> m a c . (<:.>) (Tagged ('Into Wye)) ((Maybe <:.:> Maybe) := (:*:)) a -> (:=) (Maybe <:.:> Maybe) (:*:) a forall k (mod :: k) (struct :: * -> *). Morphable mod struct => (Tagged mod <:.> struct) ~> struct premorph -> Maybe a Nothing :*: Just a y) = a -> Wye a forall a. a -> Wye a Right a y morphing ((:=) (Maybe <:.:> Maybe) (:*:) a -> Maybe a :*: Maybe a forall (t :: * -> *) a. Interpreted t => t a -> Primary t a run ((:=) (Maybe <:.:> Maybe) (:*:) a -> Maybe a :*: Maybe a) -> ((<:.>) (Tagged ('Into Wye)) ((Maybe <:.:> Maybe) := (:*:)) a -> (:=) (Maybe <:.:> Maybe) (:*:) a) -> (<:.>) (Tagged ('Into Wye)) ((Maybe <:.:> Maybe) := (:*:)) a -> Maybe a :*: Maybe a forall (m :: * -> * -> *) b c a. Semigroupoid m => m b c -> m a b -> m a c . (<:.>) (Tagged ('Into Wye)) ((Maybe <:.:> Maybe) := (:*:)) a -> (:=) (Maybe <:.:> Maybe) (:*:) a forall k (mod :: k) (struct :: * -> *). Morphable mod struct => (Tagged mod <:.> struct) ~> struct premorph -> Just a x :*: Maybe a Nothing) = a -> Wye a forall a. a -> Wye a Left a x morphing ((:=) (Maybe <:.:> Maybe) (:*:) a -> Maybe a :*: Maybe a forall (t :: * -> *) a. Interpreted t => t a -> Primary t a run ((:=) (Maybe <:.:> Maybe) (:*:) a -> Maybe a :*: Maybe a) -> ((<:.>) (Tagged ('Into Wye)) ((Maybe <:.:> Maybe) := (:*:)) a -> (:=) (Maybe <:.:> Maybe) (:*:) a) -> (<:.>) (Tagged ('Into Wye)) ((Maybe <:.:> Maybe) := (:*:)) a -> Maybe a :*: Maybe a forall (m :: * -> * -> *) b c a. Semigroupoid m => m b c -> m a b -> m a c . (<:.>) (Tagged ('Into Wye)) ((Maybe <:.:> Maybe) := (:*:)) a -> (:=) (Maybe <:.:> Maybe) (:*:) a forall k (mod :: k) (struct :: * -> *). Morphable mod struct => (Tagged mod <:.> struct) ~> struct premorph -> Maybe a Nothing :*: Maybe a Nothing) = Morphing ('Into Wye) ((Maybe <:.:> Maybe) := (:*:)) a forall a. Wye a End instance Substructure Left Wye where type Available Left Wye = Maybe type Substance Left Wye = Identity substructure :: Lens (Available 'Left Wye) ((<:.>) (Tagged 'Left) Wye a) (Substance 'Left Wye a) substructure = ((<:.>) (Tagged 'Left) Wye a -> Store (Maybe (Identity a)) ((<:.>) (Tagged 'Left) Wye a)) -> P_Q_T (->) Store Maybe ((<:.>) (Tagged 'Left) Wye a) (Identity a) forall (p :: * -> * -> *) (q :: * -> * -> *) (t :: * -> *) a b. p a (q (t b) a) -> P_Q_T p q t a b P_Q_T (((<:.>) (Tagged 'Left) Wye a -> Store (Maybe (Identity a)) ((<:.>) (Tagged 'Left) Wye a)) -> P_Q_T (->) Store Maybe ((<:.>) (Tagged 'Left) Wye a) (Identity a)) -> ((<:.>) (Tagged 'Left) Wye a -> Store (Maybe (Identity a)) ((<:.>) (Tagged 'Left) Wye a)) -> P_Q_T (->) Store Maybe ((<:.>) (Tagged 'Left) Wye a) (Identity a) forall (m :: * -> * -> *) a b. Category m => m (m a b) (m a b) $ \(<:.>) (Tagged 'Left) Wye a new -> case (<:.>) (Tagged 'Left) Wye a -> Wye a forall (cat :: * -> * -> *) (t :: (* -> *) -> * -> *) (u :: * -> *) a. (Lowerable cat t, Covariant cat cat u) => cat (t u a) (u a) lower (<:.>) (Tagged 'Left) Wye a new of Wye a End -> (((:*:) (Maybe (Identity a)) :. (->) (Maybe (Identity a))) := (<:.>) (Tagged 'Left) Wye a) -> Store (Maybe (Identity a)) ((<:.>) (Tagged 'Left) Wye a) forall s a. (((:*:) s :. (->) s) := a) -> Store s a Store ((((:*:) (Maybe (Identity a)) :. (->) (Maybe (Identity a))) := (<:.>) (Tagged 'Left) Wye a) -> Store (Maybe (Identity a)) ((<:.>) (Tagged 'Left) Wye a)) -> (((:*:) (Maybe (Identity a)) :. (->) (Maybe (Identity a))) := (<:.>) (Tagged 'Left) Wye a) -> Store (Maybe (Identity a)) ((<:.>) (Tagged 'Left) Wye a) forall (m :: * -> * -> *) a b. Category m => m (m a b) (m a b) $ Maybe (Identity a) forall a. Maybe a Nothing Maybe (Identity a) -> (Maybe (Identity a) -> (<:.>) (Tagged 'Left) Wye a) -> ((:*:) (Maybe (Identity a)) :. (->) (Maybe (Identity a))) := (<:.>) (Tagged 'Left) Wye a forall s a. s -> a -> s :*: a :*: Wye a -> (<:.>) (Tagged 'Left) Wye a forall (cat :: * -> * -> *) (t :: (* -> *) -> * -> *) (u :: * -> *) a. (Liftable cat t, Covariant cat cat u) => cat (u a) (t u a) lift (Wye a -> (<:.>) (Tagged 'Left) Wye a) -> (Maybe (Identity a) -> Wye a) -> Maybe (Identity a) -> (<:.>) (Tagged 'Left) Wye a forall (m :: * -> * -> *) b c a. Semigroupoid m => m b c -> m a b -> m a c . (a -> Wye a) -> Wye a -> Maybe a -> Wye a forall a e r. Monotonic a e => (a -> r) -> r -> e -> r resolve a -> Wye a forall a. a -> Wye a Left Wye a forall a. Wye a End (Maybe a -> Wye a) -> (Maybe (Identity a) -> Maybe a) -> Maybe (Identity a) -> Wye a forall (m :: * -> * -> *) b c a. Semigroupoid m => m b c -> m a b -> m a c . (Identity a -> a forall (t :: * -> *) a. Extractable_ t => t a -> a extract (Identity a -> a) -> Maybe (Identity a) -> Maybe a forall (source :: * -> * -> *) (target :: * -> * -> *) (t :: * -> *) a b. Covariant source target t => source a b -> target (t a) (t b) -<$>-) Left a x -> (((:*:) (Maybe (Identity a)) :. (->) (Maybe (Identity a))) := (<:.>) (Tagged 'Left) Wye a) -> Store (Maybe (Identity a)) ((<:.>) (Tagged 'Left) Wye a) forall s a. (((:*:) s :. (->) s) := a) -> Store s a Store ((((:*:) (Maybe (Identity a)) :. (->) (Maybe (Identity a))) := (<:.>) (Tagged 'Left) Wye a) -> Store (Maybe (Identity a)) ((<:.>) (Tagged 'Left) Wye a)) -> (((:*:) (Maybe (Identity a)) :. (->) (Maybe (Identity a))) := (<:.>) (Tagged 'Left) Wye a) -> Store (Maybe (Identity a)) ((<:.>) (Tagged 'Left) Wye a) forall (m :: * -> * -> *) a b. Category m => m (m a b) (m a b) $ Identity a -> Maybe (Identity a) forall a. a -> Maybe a Just (a -> Identity a forall a. a -> Identity a Identity a x) Maybe (Identity a) -> (Maybe (Identity a) -> (<:.>) (Tagged 'Left) Wye a) -> ((:*:) (Maybe (Identity a)) :. (->) (Maybe (Identity a))) := (<:.>) (Tagged 'Left) Wye a forall s a. s -> a -> s :*: a :*: Wye a -> (<:.>) (Tagged 'Left) Wye a forall (cat :: * -> * -> *) (t :: (* -> *) -> * -> *) (u :: * -> *) a. (Liftable cat t, Covariant cat cat u) => cat (u a) (t u a) lift (Wye a -> (<:.>) (Tagged 'Left) Wye a) -> (Maybe (Identity a) -> Wye a) -> Maybe (Identity a) -> (<:.>) (Tagged 'Left) Wye a forall (m :: * -> * -> *) b c a. Semigroupoid m => m b c -> m a b -> m a c . (a -> Wye a) -> Wye a -> Maybe a -> Wye a forall a e r. Monotonic a e => (a -> r) -> r -> e -> r resolve a -> Wye a forall a. a -> Wye a Left Wye a forall a. Wye a End (Maybe a -> Wye a) -> (Maybe (Identity a) -> Maybe a) -> Maybe (Identity a) -> Wye a forall (m :: * -> * -> *) b c a. Semigroupoid m => m b c -> m a b -> m a c . (Identity a -> a forall (t :: * -> *) a. Extractable_ t => t a -> a extract (Identity a -> a) -> Maybe (Identity a) -> Maybe a forall (source :: * -> * -> *) (target :: * -> * -> *) (t :: * -> *) a b. Covariant source target t => source a b -> target (t a) (t b) -<$>-) Right a y -> (((:*:) (Maybe (Identity a)) :. (->) (Maybe (Identity a))) := (<:.>) (Tagged 'Left) Wye a) -> Store (Maybe (Identity a)) ((<:.>) (Tagged 'Left) Wye a) forall s a. (((:*:) s :. (->) s) := a) -> Store s a Store ((((:*:) (Maybe (Identity a)) :. (->) (Maybe (Identity a))) := (<:.>) (Tagged 'Left) Wye a) -> Store (Maybe (Identity a)) ((<:.>) (Tagged 'Left) Wye a)) -> (((:*:) (Maybe (Identity a)) :. (->) (Maybe (Identity a))) := (<:.>) (Tagged 'Left) Wye a) -> Store (Maybe (Identity a)) ((<:.>) (Tagged 'Left) Wye a) forall (m :: * -> * -> *) a b. Category m => m (m a b) (m a b) $ Maybe (Identity a) forall a. Maybe a Nothing Maybe (Identity a) -> (Maybe (Identity a) -> (<:.>) (Tagged 'Left) Wye a) -> ((:*:) (Maybe (Identity a)) :. (->) (Maybe (Identity a))) := (<:.>) (Tagged 'Left) Wye a forall s a. s -> a -> s :*: a :*: (Wye a -> (<:.>) (Tagged 'Left) Wye a forall (cat :: * -> * -> *) (t :: (* -> *) -> * -> *) (u :: * -> *) a. (Liftable cat t, Covariant cat cat u) => cat (u a) (t u a) lift (Wye a -> (<:.>) (Tagged 'Left) Wye a) -> Wye a -> (<:.>) (Tagged 'Left) Wye a forall (m :: * -> * -> *) a b. Category m => m (m a b) (m a b) # a -> Wye a forall a. a -> Wye a Right a y (<:.>) (Tagged 'Left) Wye a -> Maybe a -> (<:.>) (Tagged 'Left) Wye a forall a b. a -> b -> a !.) (Maybe a -> (<:.>) (Tagged 'Left) Wye a) -> (Maybe (Identity a) -> Maybe a) -> Maybe (Identity a) -> (<:.>) (Tagged 'Left) Wye a forall (m :: * -> * -> *) b c a. Semigroupoid m => m b c -> m a b -> m a c . (Identity a -> a forall (t :: * -> *) a. Extractable_ t => t a -> a extract (Identity a -> a) -> Maybe (Identity a) -> Maybe a forall (source :: * -> * -> *) (target :: * -> * -> *) (t :: * -> *) a b. Covariant source target t => source a b -> target (t a) (t b) -<$>-) Both a x a y -> (((:*:) (Maybe (Identity a)) :. (->) (Maybe (Identity a))) := (<:.>) (Tagged 'Left) Wye a) -> Store (Maybe (Identity a)) ((<:.>) (Tagged 'Left) Wye a) forall s a. (((:*:) s :. (->) s) := a) -> Store s a Store ((((:*:) (Maybe (Identity a)) :. (->) (Maybe (Identity a))) := (<:.>) (Tagged 'Left) Wye a) -> Store (Maybe (Identity a)) ((<:.>) (Tagged 'Left) Wye a)) -> (((:*:) (Maybe (Identity a)) :. (->) (Maybe (Identity a))) := (<:.>) (Tagged 'Left) Wye a) -> Store (Maybe (Identity a)) ((<:.>) (Tagged 'Left) Wye a) forall (m :: * -> * -> *) a b. Category m => m (m a b) (m a b) $ Identity a -> Maybe (Identity a) forall a. a -> Maybe a Just (a -> Identity a forall a. a -> Identity a Identity a x) Maybe (Identity a) -> (Maybe (Identity a) -> (<:.>) (Tagged 'Left) Wye a) -> ((:*:) (Maybe (Identity a)) :. (->) (Maybe (Identity a))) := (<:.>) (Tagged 'Left) Wye a forall s a. s -> a -> s :*: a :*: Wye a -> (<:.>) (Tagged 'Left) Wye a forall (cat :: * -> * -> *) (t :: (* -> *) -> * -> *) (u :: * -> *) a. (Liftable cat t, Covariant cat cat u) => cat (u a) (t u a) lift (Wye a -> (<:.>) (Tagged 'Left) Wye a) -> (Maybe (Identity a) -> Wye a) -> Maybe (Identity a) -> (<:.>) (Tagged 'Left) Wye a forall (m :: * -> * -> *) b c a. Semigroupoid m => m b c -> m a b -> m a c . (a -> Wye a) -> Wye a -> Maybe a -> Wye a forall a e r. Monotonic a e => (a -> r) -> r -> e -> r resolve (a -> a -> Wye a forall a. a -> a -> Wye a Both (a -> a -> Wye a) -> a -> a -> Wye a forall a b c. (a -> b -> c) -> b -> a -> c % a y) (a -> Wye a forall a. a -> Wye a Right a y) (Maybe a -> Wye a) -> (Maybe (Identity a) -> Maybe a) -> Maybe (Identity a) -> Wye a forall (m :: * -> * -> *) b c a. Semigroupoid m => m b c -> m a b -> m a c . (Identity a -> a forall (t :: * -> *) a. Extractable_ t => t a -> a extract (Identity a -> a) -> Maybe (Identity a) -> Maybe a forall (source :: * -> * -> *) (target :: * -> * -> *) (t :: * -> *) a b. Covariant source target t => source a b -> target (t a) (t b) -<$>-) instance Substructure Right Wye where type Available Right Wye = Maybe type Substance Right Wye = Identity substructure :: Lens (Available 'Right Wye) ((<:.>) (Tagged 'Right) Wye a) (Substance 'Right Wye a) substructure = ((<:.>) (Tagged 'Right) Wye a -> Store (Maybe (Identity a)) ((<:.>) (Tagged 'Right) Wye a)) -> P_Q_T (->) Store Maybe ((<:.>) (Tagged 'Right) Wye a) (Identity a) forall (p :: * -> * -> *) (q :: * -> * -> *) (t :: * -> *) a b. p a (q (t b) a) -> P_Q_T p q t a b P_Q_T (((<:.>) (Tagged 'Right) Wye a -> Store (Maybe (Identity a)) ((<:.>) (Tagged 'Right) Wye a)) -> P_Q_T (->) Store Maybe ((<:.>) (Tagged 'Right) Wye a) (Identity a)) -> ((<:.>) (Tagged 'Right) Wye a -> Store (Maybe (Identity a)) ((<:.>) (Tagged 'Right) Wye a)) -> P_Q_T (->) Store Maybe ((<:.>) (Tagged 'Right) Wye a) (Identity a) forall (m :: * -> * -> *) a b. Category m => m (m a b) (m a b) $ \(<:.>) (Tagged 'Right) Wye a new -> case (<:.>) (Tagged 'Right) Wye a -> Wye a forall (cat :: * -> * -> *) (t :: (* -> *) -> * -> *) (u :: * -> *) a. (Lowerable cat t, Covariant cat cat u) => cat (t u a) (u a) lower (<:.>) (Tagged 'Right) Wye a new of Wye a End -> (((:*:) (Maybe (Identity a)) :. (->) (Maybe (Identity a))) := (<:.>) (Tagged 'Right) Wye a) -> Store (Maybe (Identity a)) ((<:.>) (Tagged 'Right) Wye a) forall s a. (((:*:) s :. (->) s) := a) -> Store s a Store ((((:*:) (Maybe (Identity a)) :. (->) (Maybe (Identity a))) := (<:.>) (Tagged 'Right) Wye a) -> Store (Maybe (Identity a)) ((<:.>) (Tagged 'Right) Wye a)) -> (((:*:) (Maybe (Identity a)) :. (->) (Maybe (Identity a))) := (<:.>) (Tagged 'Right) Wye a) -> Store (Maybe (Identity a)) ((<:.>) (Tagged 'Right) Wye a) forall (m :: * -> * -> *) a b. Category m => m (m a b) (m a b) $ Maybe (Identity a) forall a. Maybe a Nothing Maybe (Identity a) -> (Maybe (Identity a) -> (<:.>) (Tagged 'Right) Wye a) -> ((:*:) (Maybe (Identity a)) :. (->) (Maybe (Identity a))) := (<:.>) (Tagged 'Right) Wye a forall s a. s -> a -> s :*: a :*: Wye a -> (<:.>) (Tagged 'Right) Wye a forall (cat :: * -> * -> *) (t :: (* -> *) -> * -> *) (u :: * -> *) a. (Liftable cat t, Covariant cat cat u) => cat (u a) (t u a) lift (Wye a -> (<:.>) (Tagged 'Right) Wye a) -> (Maybe (Identity a) -> Wye a) -> Maybe (Identity a) -> (<:.>) (Tagged 'Right) Wye a forall (m :: * -> * -> *) b c a. Semigroupoid m => m b c -> m a b -> m a c . (a -> Wye a) -> Wye a -> Maybe a -> Wye a forall a e r. Monotonic a e => (a -> r) -> r -> e -> r resolve a -> Wye a forall a. a -> Wye a Right Wye a forall a. Wye a End (Maybe a -> Wye a) -> (Maybe (Identity a) -> Maybe a) -> Maybe (Identity a) -> Wye a forall (m :: * -> * -> *) b c a. Semigroupoid m => m b c -> m a b -> m a c . (Identity a -> a forall (t :: * -> *) a. Extractable_ t => t a -> a extract (Identity a -> a) -> Maybe (Identity a) -> Maybe a forall (source :: * -> * -> *) (target :: * -> * -> *) (t :: * -> *) a b. Covariant source target t => source a b -> target (t a) (t b) -<$>-) Left a x -> (((:*:) (Maybe (Identity a)) :. (->) (Maybe (Identity a))) := (<:.>) (Tagged 'Right) Wye a) -> Store (Maybe (Identity a)) ((<:.>) (Tagged 'Right) Wye a) forall s a. (((:*:) s :. (->) s) := a) -> Store s a Store ((((:*:) (Maybe (Identity a)) :. (->) (Maybe (Identity a))) := (<:.>) (Tagged 'Right) Wye a) -> Store (Maybe (Identity a)) ((<:.>) (Tagged 'Right) Wye a)) -> (((:*:) (Maybe (Identity a)) :. (->) (Maybe (Identity a))) := (<:.>) (Tagged 'Right) Wye a) -> Store (Maybe (Identity a)) ((<:.>) (Tagged 'Right) Wye a) forall (m :: * -> * -> *) a b. Category m => m (m a b) (m a b) $ Maybe (Identity a) forall a. Maybe a Nothing Maybe (Identity a) -> (Maybe (Identity a) -> (<:.>) (Tagged 'Right) Wye a) -> ((:*:) (Maybe (Identity a)) :. (->) (Maybe (Identity a))) := (<:.>) (Tagged 'Right) Wye a forall s a. s -> a -> s :*: a :*: (Wye a -> (<:.>) (Tagged 'Right) Wye a forall (cat :: * -> * -> *) (t :: (* -> *) -> * -> *) (u :: * -> *) a. (Liftable cat t, Covariant cat cat u) => cat (u a) (t u a) lift (Wye a -> (<:.>) (Tagged 'Right) Wye a) -> Wye a -> (<:.>) (Tagged 'Right) Wye a forall (m :: * -> * -> *) a b. Category m => m (m a b) (m a b) # a -> Wye a forall a. a -> Wye a Left a x (<:.>) (Tagged 'Right) Wye a -> Maybe a -> (<:.>) (Tagged 'Right) Wye a forall a b. a -> b -> a !.) (Maybe a -> (<:.>) (Tagged 'Right) Wye a) -> (Maybe (Identity a) -> Maybe a) -> Maybe (Identity a) -> (<:.>) (Tagged 'Right) Wye a forall (m :: * -> * -> *) b c a. Semigroupoid m => m b c -> m a b -> m a c . (Identity a -> a forall (t :: * -> *) a. Extractable_ t => t a -> a extract (Identity a -> a) -> Maybe (Identity a) -> Maybe a forall (source :: * -> * -> *) (target :: * -> * -> *) (t :: * -> *) a b. Covariant source target t => source a b -> target (t a) (t b) -<$>-) Right a y -> (((:*:) (Maybe (Identity a)) :. (->) (Maybe (Identity a))) := (<:.>) (Tagged 'Right) Wye a) -> Store (Maybe (Identity a)) ((<:.>) (Tagged 'Right) Wye a) forall s a. (((:*:) s :. (->) s) := a) -> Store s a Store ((((:*:) (Maybe (Identity a)) :. (->) (Maybe (Identity a))) := (<:.>) (Tagged 'Right) Wye a) -> Store (Maybe (Identity a)) ((<:.>) (Tagged 'Right) Wye a)) -> (((:*:) (Maybe (Identity a)) :. (->) (Maybe (Identity a))) := (<:.>) (Tagged 'Right) Wye a) -> Store (Maybe (Identity a)) ((<:.>) (Tagged 'Right) Wye a) forall (m :: * -> * -> *) a b. Category m => m (m a b) (m a b) $ Identity a -> Maybe (Identity a) forall a. a -> Maybe a Just (a -> Identity a forall a. a -> Identity a Identity a y) Maybe (Identity a) -> (Maybe (Identity a) -> (<:.>) (Tagged 'Right) Wye a) -> ((:*:) (Maybe (Identity a)) :. (->) (Maybe (Identity a))) := (<:.>) (Tagged 'Right) Wye a forall s a. s -> a -> s :*: a :*: Wye a -> (<:.>) (Tagged 'Right) Wye a forall (cat :: * -> * -> *) (t :: (* -> *) -> * -> *) (u :: * -> *) a. (Liftable cat t, Covariant cat cat u) => cat (u a) (t u a) lift (Wye a -> (<:.>) (Tagged 'Right) Wye a) -> (Maybe (Identity a) -> Wye a) -> Maybe (Identity a) -> (<:.>) (Tagged 'Right) Wye a forall (m :: * -> * -> *) b c a. Semigroupoid m => m b c -> m a b -> m a c . (a -> Wye a) -> Wye a -> Maybe a -> Wye a forall a e r. Monotonic a e => (a -> r) -> r -> e -> r resolve a -> Wye a forall a. a -> Wye a Right Wye a forall a. Wye a End (Maybe a -> Wye a) -> (Maybe (Identity a) -> Maybe a) -> Maybe (Identity a) -> Wye a forall (m :: * -> * -> *) b c a. Semigroupoid m => m b c -> m a b -> m a c . (Identity a -> a forall (t :: * -> *) a. Extractable_ t => t a -> a extract (Identity a -> a) -> Maybe (Identity a) -> Maybe a forall (source :: * -> * -> *) (target :: * -> * -> *) (t :: * -> *) a b. Covariant source target t => source a b -> target (t a) (t b) -<$>-) Both a x a y -> (((:*:) (Maybe (Identity a)) :. (->) (Maybe (Identity a))) := (<:.>) (Tagged 'Right) Wye a) -> Store (Maybe (Identity a)) ((<:.>) (Tagged 'Right) Wye a) forall s a. (((:*:) s :. (->) s) := a) -> Store s a Store ((((:*:) (Maybe (Identity a)) :. (->) (Maybe (Identity a))) := (<:.>) (Tagged 'Right) Wye a) -> Store (Maybe (Identity a)) ((<:.>) (Tagged 'Right) Wye a)) -> (((:*:) (Maybe (Identity a)) :. (->) (Maybe (Identity a))) := (<:.>) (Tagged 'Right) Wye a) -> Store (Maybe (Identity a)) ((<:.>) (Tagged 'Right) Wye a) forall (m :: * -> * -> *) a b. Category m => m (m a b) (m a b) $ Identity a -> Maybe (Identity a) forall a. a -> Maybe a Just (a -> Identity a forall a. a -> Identity a Identity a y) Maybe (Identity a) -> (Maybe (Identity a) -> (<:.>) (Tagged 'Right) Wye a) -> ((:*:) (Maybe (Identity a)) :. (->) (Maybe (Identity a))) := (<:.>) (Tagged 'Right) Wye a forall s a. s -> a -> s :*: a :*: Wye a -> (<:.>) (Tagged 'Right) Wye a forall (cat :: * -> * -> *) (t :: (* -> *) -> * -> *) (u :: * -> *) a. (Liftable cat t, Covariant cat cat u) => cat (u a) (t u a) lift (Wye a -> (<:.>) (Tagged 'Right) Wye a) -> (Maybe (Identity a) -> Wye a) -> Maybe (Identity a) -> (<:.>) (Tagged 'Right) Wye a forall (m :: * -> * -> *) b c a. Semigroupoid m => m b c -> m a b -> m a c . (a -> Wye a) -> Wye a -> Maybe a -> Wye a forall a e r. Monotonic a e => (a -> r) -> r -> e -> r resolve (a -> a -> Wye a forall a. a -> a -> Wye a Both a x) (a -> Wye a forall a. a -> Wye a Left a x) (Maybe a -> Wye a) -> (Maybe (Identity a) -> Maybe a) -> Maybe (Identity a) -> Wye a forall (m :: * -> * -> *) b c a. Semigroupoid m => m b c -> m a b -> m a c . (Identity a -> a forall (t :: * -> *) a. Extractable_ t => t a -> a extract (Identity a -> a) -> Maybe (Identity a) -> Maybe a forall (source :: * -> * -> *) (target :: * -> * -> *) (t :: * -> *) a b. Covariant source target t => source a b -> target (t a) (t b) -<$>-)