{-# 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