{-# 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.Pattern.Category ((.), ($)) import Pandora.Pattern.Functor.Covariant (Covariant ((<$>))) import Pandora.Pattern.Functor.Contravariant (Contravariant ((>$<))) import Pandora.Pattern.Functor.Extractable (extract) 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)) 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 :: * -> *) a b. Interpreted t => (Primary t a -> Primary t b) -> t a -> t 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 . Conclusion e a <:= Tagged ('Into Maybe) forall (t :: * -> *) a. Extractable t => a <:= t extract (Conclusion e a <:= Tagged ('Into Maybe)) -> ((<:.>) (Tagged ('Into Maybe)) (Conclusion e) a -> Tagged ('Into Maybe) (Conclusion e a)) -> (<:.>) (Tagged ('Into Maybe)) (Conclusion e) a -> Conclusion e a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (<:.>) (Tagged ('Into Maybe)) (Conclusion e) a -> Tagged ('Into Maybe) (Conclusion e a) forall (t :: * -> *) a. Interpreted t => t a -> Primary t a run 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 (Maybe a <:= Tagged ('Into (Conclusion e)) forall (t :: * -> *) a. Extractable t => a <:= t extract (Maybe a <:= Tagged ('Into (Conclusion e))) -> ((<:.>) (Tagged ('Into (Conclusion e))) Maybe a -> Tagged ('Into (Conclusion e)) (Maybe a)) -> (<:.>) (Tagged ('Into (Conclusion e))) Maybe a -> Maybe a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (<:.>) (Tagged ('Into (Conclusion e))) Maybe a -> Tagged ('Into (Conclusion e)) (Maybe a) forall (t :: * -> *) a. Interpreted t => t a -> Primary t a run -> 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 (Maybe a <:= Tagged ('Into (Conclusion e)) forall (t :: * -> *) a. Extractable t => a <:= t extract (Maybe a <:= Tagged ('Into (Conclusion e))) -> ((<:.>) (Tagged ('Into (Conclusion e))) Maybe a -> Tagged ('Into (Conclusion e)) (Maybe a)) -> (<:.>) (Tagged ('Into (Conclusion e))) Maybe a -> Maybe a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (<:.>) (Tagged ('Into (Conclusion e))) Maybe a -> Tagged ('Into (Conclusion e)) (Maybe a) forall (t :: * -> *) a. Interpreted t => t a -> Primary t a run -> 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 (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 (Wye a <:= Tagged ('Into ('Left Maybe)) forall (t :: * -> *) a. Extractable t => a <:= t extract (Wye a <:= Tagged ('Into ('Left Maybe))) -> ((<:.>) (Tagged ('Into ('Left Maybe))) Wye a -> Tagged ('Into ('Left Maybe)) (Wye a)) -> (<:.>) (Tagged ('Into ('Left Maybe))) Wye a -> Wye a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (<:.>) (Tagged ('Into ('Left Maybe))) Wye a -> Tagged ('Into ('Left Maybe)) (Wye a) forall (t :: * -> *) a. Interpreted t => t a -> Primary t a run -> Both a ls a _) = a -> Maybe a forall a. a -> Maybe a Just a ls morphing (Wye a <:= Tagged ('Into ('Left Maybe)) forall (t :: * -> *) a. Extractable t => a <:= t extract (Wye a <:= Tagged ('Into ('Left Maybe))) -> ((<:.>) (Tagged ('Into ('Left Maybe))) Wye a -> Tagged ('Into ('Left Maybe)) (Wye a)) -> (<:.>) (Tagged ('Into ('Left Maybe))) Wye a -> Wye a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (<:.>) (Tagged ('Into ('Left Maybe))) Wye a -> Tagged ('Into ('Left Maybe)) (Wye a) forall (t :: * -> *) a. Interpreted t => t a -> Primary t a run -> Left a ls) = a -> Maybe a forall a. a -> Maybe a Just a ls morphing (Wye a <:= Tagged ('Into ('Left Maybe)) forall (t :: * -> *) a. Extractable t => a <:= t extract (Wye a <:= Tagged ('Into ('Left Maybe))) -> ((<:.>) (Tagged ('Into ('Left Maybe))) Wye a -> Tagged ('Into ('Left Maybe)) (Wye a)) -> (<:.>) (Tagged ('Into ('Left Maybe))) Wye a -> Wye a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (<:.>) (Tagged ('Into ('Left Maybe))) Wye a -> Tagged ('Into ('Left Maybe)) (Wye a) forall (t :: * -> *) a. Interpreted t => t a -> Primary t a run -> Right a _) = Morphing ('Into ('Left Maybe)) Wye a forall a. Maybe a Nothing morphing (Wye a <:= Tagged ('Into ('Left Maybe)) forall (t :: * -> *) a. Extractable t => a <:= t extract (Wye a <:= Tagged ('Into ('Left Maybe))) -> ((<:.>) (Tagged ('Into ('Left Maybe))) Wye a -> Tagged ('Into ('Left Maybe)) (Wye a)) -> (<:.>) (Tagged ('Into ('Left Maybe))) Wye a -> Wye a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (<:.>) (Tagged ('Into ('Left Maybe))) Wye a -> Tagged ('Into ('Left Maybe)) (Wye a) forall (t :: * -> *) a. Interpreted t => t a -> Primary t a run -> 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 (Wye a <:= Tagged ('Into ('Right Maybe)) forall (t :: * -> *) a. Extractable t => a <:= t extract (Wye a <:= Tagged ('Into ('Right Maybe))) -> ((<:.>) (Tagged ('Into ('Right Maybe))) Wye a -> Tagged ('Into ('Right Maybe)) (Wye a)) -> (<:.>) (Tagged ('Into ('Right Maybe))) Wye a -> Wye a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (<:.>) (Tagged ('Into ('Right Maybe))) Wye a -> Tagged ('Into ('Right Maybe)) (Wye a) forall (t :: * -> *) a. Interpreted t => t a -> Primary t a run -> Both a _ a rs) = a -> Maybe a forall a. a -> Maybe a Just a rs morphing (Wye a <:= Tagged ('Into ('Right Maybe)) forall (t :: * -> *) a. Extractable t => a <:= t extract (Wye a <:= Tagged ('Into ('Right Maybe))) -> ((<:.>) (Tagged ('Into ('Right Maybe))) Wye a -> Tagged ('Into ('Right Maybe)) (Wye a)) -> (<:.>) (Tagged ('Into ('Right Maybe))) Wye a -> Wye a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (<:.>) (Tagged ('Into ('Right Maybe))) Wye a -> Tagged ('Into ('Right Maybe)) (Wye a) forall (t :: * -> *) a. Interpreted t => t a -> Primary t a run -> Left a _) = Morphing ('Into ('Right Maybe)) Wye a forall a. Maybe a Nothing morphing (Wye a <:= Tagged ('Into ('Right Maybe)) forall (t :: * -> *) a. Extractable t => a <:= t extract (Wye a <:= Tagged ('Into ('Right Maybe))) -> ((<:.>) (Tagged ('Into ('Right Maybe))) Wye a -> Tagged ('Into ('Right Maybe)) (Wye a)) -> (<:.>) (Tagged ('Into ('Right Maybe))) Wye a -> Wye a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (<:.>) (Tagged ('Into ('Right Maybe))) Wye a -> Tagged ('Into ('Right Maybe)) (Wye a) forall (t :: * -> *) a. Interpreted t => t a -> Primary t a run -> Right a rs) = a -> Maybe a forall a. a -> Maybe a Just a rs morphing (Wye a <:= Tagged ('Into ('Right Maybe)) forall (t :: * -> *) a. Extractable t => a <:= t extract (Wye a <:= Tagged ('Into ('Right Maybe))) -> ((<:.>) (Tagged ('Into ('Right Maybe))) Wye a -> Tagged ('Into ('Right Maybe)) (Wye a)) -> (<:.>) (Tagged ('Into ('Right Maybe))) Wye a -> Wye a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (<:.>) (Tagged ('Into ('Right Maybe))) Wye a -> Tagged ('Into ('Right Maybe)) (Wye a) forall (t :: * -> *) a. Interpreted t => t a -> Primary t a run -> 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 (These e a <:= Tagged ('Into ('This Maybe)) forall (t :: * -> *) a. Extractable t => a <:= t extract (These e a <:= Tagged ('Into ('This Maybe))) -> ((<:.>) (Tagged ('Into ('This Maybe))) (These e) a -> Tagged ('Into ('This Maybe)) (These e a)) -> (<:.>) (Tagged ('Into ('This Maybe))) (These e) a -> These e a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (<:.>) (Tagged ('Into ('This Maybe))) (These e) a -> Tagged ('Into ('This Maybe)) (These e a) forall (t :: * -> *) a. Interpreted t => t a -> Primary t a run -> This a x) = a -> Maybe a forall a. a -> Maybe a Just a x morphing (These e a <:= Tagged ('Into ('This Maybe)) forall (t :: * -> *) a. Extractable t => a <:= t extract (These e a <:= Tagged ('Into ('This Maybe))) -> ((<:.>) (Tagged ('Into ('This Maybe))) (These e) a -> Tagged ('Into ('This Maybe)) (These e a)) -> (<:.>) (Tagged ('Into ('This Maybe))) (These e) a -> These e a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (<:.>) (Tagged ('Into ('This Maybe))) (These e) a -> Tagged ('Into ('This Maybe)) (These e a) forall (t :: * -> *) a. Interpreted t => t a -> Primary t a run -> That e _) = Morphing ('Into ('This Maybe)) (These e) a forall a. Maybe a Nothing morphing (These e a <:= Tagged ('Into ('This Maybe)) forall (t :: * -> *) a. Extractable t => a <:= t extract (These e a <:= Tagged ('Into ('This Maybe))) -> ((<:.>) (Tagged ('Into ('This Maybe))) (These e) a -> Tagged ('Into ('This Maybe)) (These e a)) -> (<:.>) (Tagged ('Into ('This Maybe))) (These e) a -> These e a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (<:.>) (Tagged ('Into ('This Maybe))) (These e) a -> Tagged ('Into ('This Maybe)) (These e a) forall (t :: * -> *) a. Interpreted t => t a -> Primary t a run -> 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 . Flip These a a <:= Tagged ('Into ('That Maybe)) forall (t :: * -> *) a. Extractable t => a <:= t extract (Flip These a a <:= Tagged ('Into ('That Maybe))) -> ((<:.>) (Tagged ('Into ('That Maybe))) (Flip These a) a -> Tagged ('Into ('That Maybe)) (Flip These a a)) -> (<:.>) (Tagged ('Into ('That Maybe))) (Flip These a) a -> Flip 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 -> Tagged ('Into ('That Maybe)) (Flip These a a) forall (t :: * -> *) a. Interpreted t => t a -> Primary t a run -> 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 . Flip These a a <:= Tagged ('Into ('That Maybe)) forall (t :: * -> *) a. Extractable t => a <:= t extract (Flip These a a <:= Tagged ('Into ('That Maybe))) -> ((<:.>) (Tagged ('Into ('That Maybe))) (Flip These a) a -> Tagged ('Into ('That Maybe)) (Flip These a a)) -> (<:.>) (Tagged ('Into ('That Maybe))) (Flip These a) a -> Flip 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 -> Tagged ('Into ('That Maybe)) (Flip These a a) forall (t :: * -> *) a. Interpreted t => t a -> Primary t a run -> 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 . Flip These a a <:= Tagged ('Into ('That Maybe)) forall (t :: * -> *) a. Extractable t => a <:= t extract (Flip These a a <:= Tagged ('Into ('That Maybe))) -> ((<:.>) (Tagged ('Into ('That Maybe))) (Flip These a) a -> Tagged ('Into ('That Maybe)) (Flip These a a)) -> (<:.>) (Tagged ('Into ('That Maybe))) (Flip These a) a -> Flip 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 -> Tagged ('Into ('That Maybe)) (Flip These a a) forall (t :: * -> *) a. Interpreted t => t a -> Primary t a run -> 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 . Flip Wedge a a <:= Tagged ('Into ('Here Maybe)) forall (t :: * -> *) a. Extractable t => a <:= t extract (Flip Wedge a a <:= Tagged ('Into ('Here Maybe))) -> ((<:.>) (Tagged ('Into ('Here Maybe))) (Flip Wedge a) a -> Tagged ('Into ('Here Maybe)) (Flip Wedge a a)) -> (<:.>) (Tagged ('Into ('Here Maybe))) (Flip Wedge a) a -> Flip 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 -> Tagged ('Into ('Here Maybe)) (Flip Wedge a a) forall (t :: * -> *) a. Interpreted t => t a -> Primary t a run -> 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 . Flip Wedge a a <:= Tagged ('Into ('Here Maybe)) forall (t :: * -> *) a. Extractable t => a <:= t extract (Flip Wedge a a <:= Tagged ('Into ('Here Maybe))) -> ((<:.>) (Tagged ('Into ('Here Maybe))) (Flip Wedge a) a -> Tagged ('Into ('Here Maybe)) (Flip Wedge a a)) -> (<:.>) (Tagged ('Into ('Here Maybe))) (Flip Wedge a) a -> Flip 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 -> Tagged ('Into ('Here Maybe)) (Flip Wedge a a) forall (t :: * -> *) a. Interpreted t => t a -> Primary t a run -> 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 . Flip Wedge a a <:= Tagged ('Into ('Here Maybe)) forall (t :: * -> *) a. Extractable t => a <:= t extract (Flip Wedge a a <:= Tagged ('Into ('Here Maybe))) -> ((<:.>) (Tagged ('Into ('Here Maybe))) (Flip Wedge a) a -> Tagged ('Into ('Here Maybe)) (Flip Wedge a a)) -> (<:.>) (Tagged ('Into ('Here Maybe))) (Flip Wedge a) a -> Flip 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 -> Tagged ('Into ('Here Maybe)) (Flip Wedge a a) forall (t :: * -> *) a. Interpreted t => t a -> Primary t a run -> 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 (Wedge e a <:= Tagged ('Into ('There Maybe)) forall (t :: * -> *) a. Extractable t => a <:= t extract (Wedge e a <:= Tagged ('Into ('There Maybe))) -> ((<:.>) (Tagged ('Into ('There Maybe))) (Wedge e) a -> Tagged ('Into ('There Maybe)) (Wedge e a)) -> (<:.>) (Tagged ('Into ('There Maybe))) (Wedge e) a -> Wedge e a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (<:.>) (Tagged ('Into ('There Maybe))) (Wedge e) a -> Tagged ('Into ('There Maybe)) (Wedge e a) forall (t :: * -> *) a. Interpreted t => t a -> Primary t a run -> Wedge e a Nowhere) = Morphing ('Into ('There Maybe)) (Wedge e) a forall a. Maybe a Nothing morphing (Wedge e a <:= Tagged ('Into ('There Maybe)) forall (t :: * -> *) a. Extractable t => a <:= t extract (Wedge e a <:= Tagged ('Into ('There Maybe))) -> ((<:.>) (Tagged ('Into ('There Maybe))) (Wedge e) a -> Tagged ('Into ('There Maybe)) (Wedge e a)) -> (<:.>) (Tagged ('Into ('There Maybe))) (Wedge e) a -> Wedge e a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (<:.>) (Tagged ('Into ('There Maybe))) (Wedge e) a -> Tagged ('Into ('There Maybe)) (Wedge e a) forall (t :: * -> *) a. Interpreted t => t a -> Primary t a run -> Here e _) = Morphing ('Into ('There Maybe)) (Wedge e) a forall a. Maybe a Nothing morphing (Wedge e a <:= Tagged ('Into ('There Maybe)) forall (t :: * -> *) a. Extractable t => a <:= t extract (Wedge e a <:= Tagged ('Into ('There Maybe))) -> ((<:.>) (Tagged ('Into ('There Maybe))) (Wedge e) a -> Tagged ('Into ('There Maybe)) (Wedge e a)) -> (<:.>) (Tagged ('Into ('There Maybe))) (Wedge e) a -> Wedge e a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (<:.>) (Tagged ('Into ('There Maybe))) (Wedge e) a -> Tagged ('Into ('There Maybe)) (Wedge e a) forall (t :: * -> *) a. Interpreted t => t a -> Primary t a run -> There a x) = a -> Maybe a forall a. a -> Maybe a Just a x instance Morphable (Into Wye) ((<:.:>) (:*:) Maybe) where type Morphing (Into Wye) ((<:.:>) (:*:) Maybe) = Wye morphing :: (<:.>) (Tagged ('Into Wye)) ((:*:) <:.:> Maybe) a -> Morphing ('Into Wye) ((:*:) <:.:> Maybe) a morphing (T_U Covariant Covariant Maybe (:*:) Maybe a -> Product (Maybe a) (Maybe a) forall (t :: * -> *) a. Interpreted t => t a -> Primary t a run (T_U Covariant Covariant Maybe (:*:) Maybe a -> Product (Maybe a) (Maybe a)) -> ((<:.>) (Tagged ('Into Wye)) ((:*:) <:.:> Maybe) a -> T_U Covariant Covariant Maybe (:*:) Maybe a) -> (<:.>) (Tagged ('Into Wye)) ((:*:) <:.:> Maybe) a -> Product (Maybe a) (Maybe a) forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . T_U Covariant Covariant Maybe (:*:) Maybe a <:= Tagged ('Into Wye) forall (t :: * -> *) a. Extractable t => a <:= t extract (T_U Covariant Covariant Maybe (:*:) Maybe a <:= Tagged ('Into Wye)) -> ((<:.>) (Tagged ('Into Wye)) ((:*:) <:.:> Maybe) a -> Tagged ('Into Wye) (T_U Covariant Covariant Maybe (:*:) Maybe a)) -> (<:.>) (Tagged ('Into Wye)) ((:*:) <:.:> Maybe) a -> T_U Covariant Covariant Maybe (:*:) Maybe a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (<:.>) (Tagged ('Into Wye)) ((:*:) <:.:> Maybe) a -> Tagged ('Into Wye) (T_U Covariant Covariant Maybe (:*:) Maybe a) forall (t :: * -> *) a. Interpreted t => t a -> Primary t a run -> Just a x :*: Just a y) = a -> a -> Wye a forall a. a -> a -> Wye a Both a x a y morphing (T_U Covariant Covariant Maybe (:*:) Maybe a -> Product (Maybe a) (Maybe a) forall (t :: * -> *) a. Interpreted t => t a -> Primary t a run (T_U Covariant Covariant Maybe (:*:) Maybe a -> Product (Maybe a) (Maybe a)) -> ((<:.>) (Tagged ('Into Wye)) ((:*:) <:.:> Maybe) a -> T_U Covariant Covariant Maybe (:*:) Maybe a) -> (<:.>) (Tagged ('Into Wye)) ((:*:) <:.:> Maybe) a -> Product (Maybe a) (Maybe a) forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . T_U Covariant Covariant Maybe (:*:) Maybe a <:= Tagged ('Into Wye) forall (t :: * -> *) a. Extractable t => a <:= t extract (T_U Covariant Covariant Maybe (:*:) Maybe a <:= Tagged ('Into Wye)) -> ((<:.>) (Tagged ('Into Wye)) ((:*:) <:.:> Maybe) a -> Tagged ('Into Wye) (T_U Covariant Covariant Maybe (:*:) Maybe a)) -> (<:.>) (Tagged ('Into Wye)) ((:*:) <:.:> Maybe) a -> T_U Covariant Covariant Maybe (:*:) Maybe a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (<:.>) (Tagged ('Into Wye)) ((:*:) <:.:> Maybe) a -> Tagged ('Into Wye) (T_U Covariant Covariant Maybe (:*:) Maybe a) forall (t :: * -> *) a. Interpreted t => t a -> Primary t a run -> Maybe a Nothing :*: Just a y) = a -> Wye a forall a. a -> Wye a Right a y morphing (T_U Covariant Covariant Maybe (:*:) Maybe a -> Product (Maybe a) (Maybe a) forall (t :: * -> *) a. Interpreted t => t a -> Primary t a run (T_U Covariant Covariant Maybe (:*:) Maybe a -> Product (Maybe a) (Maybe a)) -> ((<:.>) (Tagged ('Into Wye)) ((:*:) <:.:> Maybe) a -> T_U Covariant Covariant Maybe (:*:) Maybe a) -> (<:.>) (Tagged ('Into Wye)) ((:*:) <:.:> Maybe) a -> Product (Maybe a) (Maybe a) forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . T_U Covariant Covariant Maybe (:*:) Maybe a <:= Tagged ('Into Wye) forall (t :: * -> *) a. Extractable t => a <:= t extract (T_U Covariant Covariant Maybe (:*:) Maybe a <:= Tagged ('Into Wye)) -> ((<:.>) (Tagged ('Into Wye)) ((:*:) <:.:> Maybe) a -> Tagged ('Into Wye) (T_U Covariant Covariant Maybe (:*:) Maybe a)) -> (<:.>) (Tagged ('Into Wye)) ((:*:) <:.:> Maybe) a -> T_U Covariant Covariant Maybe (:*:) Maybe a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (<:.>) (Tagged ('Into Wye)) ((:*:) <:.:> Maybe) a -> Tagged ('Into Wye) (T_U Covariant Covariant Maybe (:*:) Maybe a) forall (t :: * -> *) a. Interpreted t => t a -> Primary t a run -> Just a x :*: Maybe a Nothing) = a -> Wye a forall a. a -> Wye a Left a x morphing (T_U Covariant Covariant Maybe (:*:) Maybe a -> Product (Maybe a) (Maybe a) forall (t :: * -> *) a. Interpreted t => t a -> Primary t a run (T_U Covariant Covariant Maybe (:*:) Maybe a -> Product (Maybe a) (Maybe a)) -> ((<:.>) (Tagged ('Into Wye)) ((:*:) <:.:> Maybe) a -> T_U Covariant Covariant Maybe (:*:) Maybe a) -> (<:.>) (Tagged ('Into Wye)) ((:*:) <:.:> Maybe) a -> Product (Maybe a) (Maybe a) forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . T_U Covariant Covariant Maybe (:*:) Maybe a <:= Tagged ('Into Wye) forall (t :: * -> *) a. Extractable t => a <:= t extract (T_U Covariant Covariant Maybe (:*:) Maybe a <:= Tagged ('Into Wye)) -> ((<:.>) (Tagged ('Into Wye)) ((:*:) <:.:> Maybe) a -> Tagged ('Into Wye) (T_U Covariant Covariant Maybe (:*:) Maybe a)) -> (<:.>) (Tagged ('Into Wye)) ((:*:) <:.:> Maybe) a -> T_U Covariant Covariant Maybe (:*:) Maybe a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (<:.>) (Tagged ('Into Wye)) ((:*:) <:.:> Maybe) a -> Tagged ('Into Wye) (T_U Covariant Covariant Maybe (:*:) Maybe a) forall (t :: * -> *) a. Interpreted t => t a -> Primary t a run -> Maybe a Nothing :*: Maybe a Nothing) = Morphing ('Into Wye) ((:*:) <:.:> Maybe) a forall a. Wye a End