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