{-# OPTIONS_GHC -fno-warn-orphans #-}
module Pandora.Paradigm.Structure.Some.Rose where
import Pandora.Core.Functor (type (:.), type (>), type (<<), type (>>>))
import Pandora.Core.Interpreted (run, unite, (<~))
import Pandora.Pattern.Semigroupoid ((.))
import Pandora.Pattern.Category ((<--), (<---), (<----), (<-----), (<------), (<-------))
import Pandora.Pattern.Kernel (constant)
import Pandora.Pattern.Functor.Covariant (Covariant ((<-|-), (<-|----)))
import Pandora.Pattern.Functor.Contravariant ((>-|-))
import Pandora.Pattern.Functor.Traversable ((<-/-))
import Pandora.Pattern.Functor.Bindable (Bindable ((=<<), (====<<), (=====<<), (======<<)))
import Pandora.Pattern.Transformer.Liftable (lift)
import Pandora.Pattern.Transformer.Lowerable (lower)
import Pandora.Pattern.Object.Setoid (Setoid ((?=)))
import Pandora.Pattern.Object.Semigroup ((+))
import Pandora.Paradigm.Algebraic.Exponential ((%), (.:..))
import Pandora.Paradigm.Algebraic.Product ((:*:) ((:*:)), type (<:*:>), (<:*:>), attached)
import Pandora.Paradigm.Algebraic.Functor ((<-*-), (<-*----), extract, point, empty, void)
import Pandora.Paradigm.Primary.Auxiliary (Vertical (Up, Down), Horizontal (Left, Right))
import Pandora.Paradigm.Primary.Functor.Exactly (Exactly (Exactly))
import Pandora.Paradigm.Primary.Functor.Maybe (Maybe (Just, Nothing))
import Pandora.Paradigm.Primary.Functor.Predicate (equate)
import Pandora.Paradigm.Primary.Functor.Tagged (Tagged)
import Pandora.Paradigm.Primary.Transformer.Construction (Construction (Construct), deconstruct)
import Pandora.Paradigm.Primary.Transformer.Reverse (Reverse (Reverse))
import Pandora.Paradigm.Schemes (TU (TU), TT (TT), T_U (T_U), P_Q_T (P_Q_T), type (<::>), type (<:.>))
import Pandora.Paradigm.Controlflow.Effect.Transformer ((:>), wrap)
import Pandora.Paradigm.Inventory.Some.State (State, change, current)
import Pandora.Paradigm.Inventory.Some.Store (Store (Store))
import Pandora.Paradigm.Inventory.Some.Optics (Lens, view, mutate, replace, primary)
import Pandora.Paradigm.Inventory (zoom, overlook, probably)
import Pandora.Paradigm.Structure.Ability.Morphable (Morphable (Morphing, morphing), Morph (Lookup, Element, Key), premorph, find)
import Pandora.Paradigm.Structure.Modification.Nonempty (Nonempty)
import Pandora.Paradigm.Structure.Ability.Slidable (Slidable (Sliding, slide))
import Pandora.Paradigm.Structure.Ability.Substructure (Substructure (Substance, substructure)
, Segment (Rest, Ancestors, Siblings, Children, Tree, Forest), Location (Focused), sub)
import Pandora.Paradigm.Structure.Interface.Zipper (Zipper, Zippable (Breadcrumbs, fasten, unfasten))
import Pandora.Paradigm.Structure.Interface.Stack (Stack (pop, push, top))
import Pandora.Paradigm.Structure.Modification.Prefixed (Prefixed)
import Pandora.Paradigm.Structure.Modification.Tape (Tape)
import Pandora.Paradigm.Structure.Some.List (List)
type Rose = Maybe <::> Construction List
instance Setoid k => Morphable (Lookup Key) (Prefixed Rose k) where
type Morphing (Lookup Key) (Prefixed Rose k) = (->) (Nonempty List k) <:.> Maybe
morphing :: (<::>) (Tagged ('Lookup 'Key)) (Prefixed Rose k) a
-> Morphing ('Lookup 'Key) (Prefixed Rose k) a
morphing (<::>) (Tagged ('Lookup 'Key)) (Prefixed Rose k) a
prefixed_rose_tree = case TT Covariant Covariant Rose ((:*:) k) a -> (Rose :. (:*:) k) >>> a
forall (m :: * -> * -> *) (t :: * -> *) a.
Interpreted m t =>
(m < t a) < Primary t a
run (TT Covariant Covariant Rose ((:*:) k) a
-> (Rose :. (:*:) k) >>> a)
-> TT Covariant Covariant Rose ((:*:) k) a
-> (Rose :. (:*:) k) >>> a
forall (m :: * -> * -> *) a b. Category m => m (m a b) (m a b)
<-- (<::>) (Tagged ('Lookup 'Key)) (Prefixed Rose k) a
-> TT Covariant Covariant Rose ((:*:) k) a
forall k (mod :: k) (struct :: * -> *).
Morphable mod struct =>
(Tagged mod <::> struct) ~> struct
premorph (<::>) (Tagged ('Lookup 'Key)) (Prefixed Rose k) a
prefixed_rose_tree of
TT Maybe
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) (k :*: a))
Nothing -> (((->) (Construction Maybe k) :. Maybe) >>> a)
-> TU Covariant Covariant ((->) (Construction Maybe k)) Maybe 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 ((((->) (Construction Maybe k) :. Maybe) >>> a)
-> TU Covariant Covariant ((->) (Construction Maybe k)) Maybe a)
-> (((->) (Construction Maybe k) :. Maybe) >>> a)
-> TU Covariant Covariant ((->) (Construction Maybe k)) Maybe a
forall (m :: * -> * -> *) a b. Category m => m (m a b) (m a b)
<-- Maybe a -> ((->) (Construction Maybe k) :. Maybe) >>> a
forall (m :: * -> * -> *) a i. Kernel m => m a (m i a)
constant Maybe a
forall a. Maybe a
Nothing
TT (Just Construction
(TT Covariant Covariant Maybe (Construction Maybe)) (k :*: a)
tree) -> (((->) (Construction Maybe k) :. Maybe) >>> a)
-> TU Covariant Covariant ((->) (Construction Maybe k)) Maybe 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 ((((->) (Construction Maybe k) :. Maybe) >>> a)
-> TU Covariant Covariant ((->) (Construction Maybe k)) Maybe a)
-> (((->) (Construction Maybe k) :. Maybe) >>> a)
-> TU Covariant Covariant ((->) (Construction Maybe k)) Maybe a
forall (m :: * -> * -> *) a b. Category m => m (m a b) (m a b)
<-- Construction Maybe k
-> Construction
(TT Covariant Covariant Maybe (Construction Maybe)) (k :*: a)
-> Maybe a
forall k a.
Setoid k =>
Nonempty (TT Covariant Covariant Maybe (Construction Maybe)) k
-> (Nonempty Rose >>> (k :*: a)) -> Maybe a
find_rose_sub_tree (Construction Maybe k
-> Construction
(TT Covariant Covariant Maybe (Construction Maybe)) (k :*: a)
-> Maybe a)
-> Construction
(TT Covariant Covariant Maybe (Construction Maybe)) (k :*: a)
-> ((->) (Construction Maybe k) :. Maybe) >>> a
forall a b c. (a -> b -> c) -> b -> a -> c
% Construction
(TT Covariant Covariant Maybe (Construction Maybe)) (k :*: a)
tree
find_rose_sub_tree :: forall k a . Setoid k => Nonempty List k -> Nonempty Rose >>> k :*: a -> Maybe a
find_rose_sub_tree :: Nonempty (TT Covariant Covariant Maybe (Construction Maybe)) k
-> (Nonempty Rose >>> (k :*: a)) -> Maybe a
find_rose_sub_tree (Construct k ks) Nonempty Rose >>> (k :*: a)
tree = k
k k -> k -> Maybe a -> Maybe a -> Maybe a
forall a r. Setoid a => a -> a -> r -> r -> r
?= (k :*: a) -> k
forall a b. (a :*: b) -> a
attached (Construction
(TT Covariant Covariant Maybe (Construction Maybe)) (k :*: a)
-> k :*: a
forall (t :: * -> *) a. Extractable t => t a -> a
extract Construction
(TT Covariant Covariant Maybe (Construction Maybe)) (k :*: a)
Nonempty Rose >>> (k :*: a)
tree)
(Maybe a -> Maybe a -> Maybe a) -> Maybe a -> Maybe a -> Maybe a
forall (m :: * -> * -> *) a b. Category m => m (m a b) (m a b)
<----- case (Maybe :. Construction Maybe) >>> k
ks of
Just Construction Maybe k
keys -> Nonempty (TT Covariant Covariant Maybe (Construction Maybe)) k
-> (Nonempty Rose >>> (k :*: a)) -> Maybe a
forall k a.
Setoid k =>
Nonempty (TT Covariant Covariant Maybe (Construction Maybe)) k
-> (Nonempty Rose >>> (k :*: a)) -> Maybe a
find_rose_sub_tree Construction Maybe k
Nonempty (TT Covariant Covariant Maybe (Construction Maybe)) k
keys (Construction
(TT Covariant Covariant Maybe (Construction Maybe)) (k :*: a)
-> Maybe a)
-> Maybe
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) (k :*: a))
-> Maybe a
forall (source :: * -> * -> *) (t :: * -> *) a b.
Bindable source t =>
source a (t b) -> source (t a) (t b)
=<< Nonempty (TT Covariant Covariant Maybe (Construction Maybe)) k
-> (Maybe :. Nonempty Rose) >>> (k :*: a)
subtree Construction Maybe k
Nonempty (TT Covariant Covariant Maybe (Construction Maybe)) k
keys
(Maybe :. Construction Maybe) >>> k
Nothing -> a -> Maybe a
forall a. a -> Maybe a
Just (a -> Maybe a) -> a -> Maybe a
forall (m :: * -> * -> *) a b. Category m => m (m a b) (m a b)
<--- (k :*: a) -> a
forall (t :: * -> *) a. Extractable t => t a -> a
extract ((k :*: a) -> a) -> (k :*: a) -> a
forall (m :: * -> * -> *) a b. Category m => m (m a b) (m a b)
<-- Construction
(TT Covariant Covariant Maybe (Construction Maybe)) (k :*: a)
-> k :*: a
forall (t :: * -> *) a. Extractable t => t a -> a
extract Construction
(TT Covariant Covariant Maybe (Construction Maybe)) (k :*: a)
Nonempty Rose >>> (k :*: a)
tree
(Maybe a -> Maybe a) -> Maybe a -> Maybe a
forall (m :: * -> * -> *) a b. Category m => m (m a b) (m a b)
<----- Maybe a
forall a. Maybe a
Nothing where
subtree :: Nonempty List k -> Maybe :. Nonempty Rose >>> k :*: a
subtree :: Nonempty (TT Covariant Covariant Maybe (Construction Maybe)) k
-> (Maybe :. Nonempty Rose) >>> (k :*: a)
subtree Nonempty (TT Covariant Covariant Maybe (Construction Maybe)) k
keys = forall a1 (mod :: a1) (struct :: * -> *) (result :: * -> *) a2.
Morphed
('Find mod) struct ((Predicate <:.:> result) >>>>>> (->)) =>
Predicate a2 -> struct a2 -> result a2
forall (struct :: * -> *) (result :: * -> *) a2.
Morphed
('Find 'Element) struct ((Predicate <:.:> result) >>>>>> (->)) =>
Predicate a2 -> struct a2 -> result a2
find @Element
(Predicate
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) (k :*: a))
-> TT
Covariant
Covariant
Maybe
(Construction Maybe)
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) (k :*: a))
-> Maybe
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) (k :*: a)))
-> Predicate
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) (k :*: a))
-> TT
Covariant
Covariant
Maybe
(Construction Maybe)
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) (k :*: a))
-> Maybe
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) (k :*: a))
forall (m :: * -> * -> *) a b. Category m => m (m a b) (m a b)
<---- (k :*: a) -> k
forall a b. (a :*: b) -> a
attached ((k :*: a) -> k)
-> (Construction
(TT Covariant Covariant Maybe (Construction Maybe)) (k :*: a)
-> k :*: a)
-> Construction
(TT Covariant Covariant Maybe (Construction Maybe)) (k :*: a)
-> k
forall (m :: * -> * -> *) b c a.
Semigroupoid m =>
m b c -> m a b -> m a c
. Construction
(TT Covariant Covariant Maybe (Construction Maybe)) (k :*: a)
-> k :*: a
forall (t :: * -> *) a. Extractable t => t a -> a
extract
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) (k :*: a)
-> k)
-> Predicate k
-> Predicate
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) (k :*: a))
forall (source :: * -> * -> *) (target :: * -> * -> *)
(t :: * -> *) a b.
Contravariant source target t =>
source a b -> target (t b) (t a)
>-|- k :=> Predicate
forall a. Setoid a => a :=> Predicate
equate (k :=> Predicate) -> k :=> Predicate
forall (m :: * -> * -> *) a b. Category m => m (m a b) (m a b)
<-- Construction Maybe k -> k
forall (t :: * -> *) a. Extractable t => t a -> a
extract Construction Maybe k
Nonempty (TT Covariant Covariant Maybe (Construction Maybe)) k
keys
(TT
Covariant
Covariant
Maybe
(Construction Maybe)
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) (k :*: a))
-> Maybe
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) (k :*: a)))
-> TT
Covariant
Covariant
Maybe
(Construction Maybe)
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) (k :*: a))
-> Maybe
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) (k :*: a))
forall (m :: * -> * -> *) a b. Category m => m (m a b) (m a b)
<---- Construction
(TT Covariant Covariant Maybe (Construction Maybe)) (k :*: a)
-> TT
Covariant
Covariant
Maybe
(Construction Maybe)
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) (k :*: a))
forall (t :: * -> *) a.
Construction t a -> (t :. Construction t) >>> a
deconstruct Construction
(TT Covariant Covariant Maybe (Construction Maybe)) (k :*: a)
Nonempty Rose >>> (k :*: a)
tree
type Roses = List <::> Construction List
instance Zippable Rose where
type Breadcrumbs Rose = Roses <:*:> List <::> Tape Roses
fasten :: Rose e -> Maybe > Zipper Rose e
fasten (TT (Just (Construct e
x (TT Covariant Covariant Maybe (Construction Maybe)
:. Construction
(TT Covariant Covariant Maybe (Construction Maybe)))
>>> e
xs))) = ((Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
>>>>>> e)
-> Maybe
((Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
>>>>>> e)
forall a. a -> Maybe a
Just (((Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
>>>>>> e)
-> Maybe
((Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
>>>>>> e))
-> ((Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
>>>>>> e)
-> Maybe
((Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
>>>>>> e)
forall (m :: * -> * -> *) a b. Category m => m (m a b) (m a b)
<----- e -> Exactly e
forall a. a -> Exactly a
Exactly e
x Exactly e
-> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe))))))
e
-> (Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
>>>>>> e
forall k (t :: k -> *) (a :: k) (u :: k -> *).
t a -> u a -> (t <:*:> u) >>>>>> a
<:*:> ((TT Covariant Covariant Maybe (Construction Maybe)
:. Construction
(TT Covariant Covariant Maybe (Construction Maybe)))
>>> e)
-> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
e
forall k k k k (ct :: k) (ct' :: k) (t :: k -> *) (t' :: k -> k)
(a :: k).
((t :. t') >>> a) -> TT ct ct' t t' a
TT (TT Covariant Covariant Maybe (Construction Maybe)
:. Construction
(TT Covariant Covariant Maybe (Construction Maybe)))
>>> e
xs TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
e
-> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))
e
-> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe))))))
e
forall k (t :: k -> *) (a :: k) (u :: k -> *).
t a -> u a -> (t <:*:> u) >>>>>> a
<:*:> ((TT Covariant Covariant Maybe (Construction Maybe)
:. Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))
>>> e)
-> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))
e
forall k k k k (ct :: k) (ct' :: k) (t :: k -> *) (t' :: k -> k)
(a :: k).
((t :. t') >>> a) -> TT ct ct' t t' a
TT (TT Covariant Covariant Maybe (Construction Maybe)
:. Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))
>>> e
forall (t :: * -> *) a. Emptiable t => t a
empty
fasten (TT Maybe
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
Nothing) = Maybe (T_U Covariant Covariant (:*:) Exactly (Breadcrumbs Rose) e)
forall a. Maybe a
Nothing
unfasten :: forall e . Zipper Rose e -> Nonempty Rose e
unfasten :: Zipper Rose e -> Nonempty Rose e
unfasten (T_U (Exactly e
focus :*: T_U (TT children :*: TT ancestors))) =
(Construction (TT Covariant Covariant Maybe (Construction Maybe)) e
:*: TT Covariant Covariant Maybe (Construction Maybe) ())
-> Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e
forall a b. (a :*: b) -> a
attached ((Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e
:*: TT Covariant Covariant Maybe (Construction Maybe) ())
-> Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
-> (Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e
:*: TT Covariant Covariant Maybe (Construction Maybe) ())
-> Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e
forall (m :: * -> * -> *) a b. Category m => m (m a b) (m a b)
<-- (T_U
Covariant
Covariant
(:*:)
Exactly
(T_U
Covariant
Covariant
(:*:)
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))
e
-> State
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
()
Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e
-> (State << Nonempty Rose e) << ()
cover (Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e
-> State
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
())
-> TT
Covariant
Covariant
Maybe
(Construction Maybe)
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e)
-> State
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
(TT Covariant Covariant Maybe (Construction Maybe) ())
forall (source :: * -> * -> *) (target :: * -> * -> *)
(t :: * -> *) (u :: * -> *) a b.
(Traversable source target t, Covariant source target u,
Monoidal (Straight source) (Straight target) (:*:) (:*:) u) =>
source a (u b) -> target (t a) (u (t b))
<-/- TT
Covariant
Covariant
Maybe
(Construction Maybe)
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e)
ancestors) State
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
(TT Covariant Covariant Maybe (Construction Maybe) ())
-> ((->)
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
:. (:*:)
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e))
>>> TT Covariant Covariant Maybe (Construction Maybe) ()
forall (m :: * -> * -> *) (t :: * -> *) a.
Interpreted m t =>
(m < t a) < Primary t a
<~ e
-> ((TT Covariant Covariant Maybe (Construction Maybe)
:. Construction
(TT Covariant Covariant Maybe (Construction Maybe)))
>>> e)
-> Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e
forall (t :: * -> *) a.
a -> ((t :. Construction t) >>> a) -> Construction t a
Construct e
focus (TT Covariant Covariant Maybe (Construction Maybe)
:. Construction
(TT Covariant Covariant Maybe (Construction Maybe)))
>>> e
children where
cover :: Tape Roses e -> State << Nonempty Rose e << ()
cover :: Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e
-> (State << Nonempty Rose e) << ()
cover (T_U (Exactly e
x :*: T_U (Reverse (TT (TT Covariant Covariant Maybe (Construction Maybe)
:. Construction
(TT Covariant Covariant Maybe (Construction Maybe)))
>>> e
lf) :*: TT (TT Covariant Covariant Maybe (Construction Maybe)
:. Construction
(TT Covariant Covariant Maybe (Construction Maybe)))
>>> e
rf))) =
State
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
-> State
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
()
forall (t :: * -> *) a. Covariant (->) (->) t => t a -> t ()
void (State
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
-> State
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
())
-> State
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
-> State
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
()
forall (m :: * -> * -> *) a b. Category m => m (m a b) (m a b)
<--- forall s (t :: * -> *). Stateful s t => (s -> s) -> t s
forall (t :: * -> *).
Stateful (Nonempty Rose e) t =>
(Nonempty Rose e -> Nonempty Rose e) -> t (Nonempty Rose e)
change @(Nonempty Rose e) ((Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e
-> Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
-> State
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e))
-> (Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e
-> Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
-> State
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
forall (m :: * -> * -> *) a b. Category m => m (m a b) (m a b)
<-- \Construction (TT Covariant Covariant Maybe (Construction Maybe)) e
nrt ->
e
-> ((TT Covariant Covariant Maybe (Construction Maybe)
:. Construction
(TT Covariant Covariant Maybe (Construction Maybe)))
>>> e)
-> Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e
forall (t :: * -> *) a.
a -> ((t :. Construction t) >>> a) -> Construction t a
Construct (e
-> ((TT Covariant Covariant Maybe (Construction Maybe)
:. Construction
(TT Covariant Covariant Maybe (Construction Maybe)))
>>> e)
-> Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
-> e
-> ((TT Covariant Covariant Maybe (Construction Maybe)
:. Construction
(TT Covariant Covariant Maybe (Construction Maybe)))
>>> e)
-> Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e
forall (m :: * -> * -> *) a b. Category m => m (m a b) (m a b)
<------- e
x (((TT Covariant Covariant Maybe (Construction Maybe)
:. Construction
(TT Covariant Covariant Maybe (Construction Maybe)))
>>> e)
-> Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
-> ((TT Covariant Covariant Maybe (Construction Maybe)
:. Construction
(TT Covariant Covariant Maybe (Construction Maybe)))
>>> e)
-> Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e
forall (m :: * -> * -> *) a b. Category m => m (m a b) (m a b)
<------- Construction
Maybe
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
-> (TT Covariant Covariant Maybe (Construction Maybe)
:. Construction
(TT Covariant Covariant Maybe (Construction Maybe)))
>>> e
forall (cat :: * -> * -> *) (t :: (* -> *) -> * -> *) (u :: * -> *)
a.
(Liftable cat t, Covariant cat cat u) =>
cat (u a) (t u a)
lift (Construction
Maybe
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
-> (TT Covariant Covariant Maybe (Construction Maybe)
:. Construction
(TT Covariant Covariant Maybe (Construction Maybe)))
>>> e)
-> Construction
Maybe
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
-> (TT Covariant Covariant Maybe (Construction Maybe)
:. Construction
(TT Covariant Covariant Maybe (Construction Maybe)))
>>> e
forall (m :: * -> * -> *) a b. Category m => m (m a b) (m a b)
<------ forall e.
Zippable (TT Covariant Covariant Maybe (Construction Maybe)) =>
Zipper (TT Covariant Covariant Maybe (Construction Maybe)) e
-> Nonempty (TT Covariant Covariant Maybe (Construction Maybe)) e
forall (structure :: * -> *) e.
Zippable structure =>
Zipper structure e -> Nonempty structure e
unfasten @List
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse (TT Covariant Covariant Maybe (Construction Maybe))
<:*:> TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
-> Construction
Maybe
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e))
-> T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse (TT Covariant Covariant Maybe (Construction Maybe))
<:*:> TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
-> Construction
Maybe
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
forall (m :: * -> * -> *) a b. Category m => m (m a b) (m a b)
<----- Construction (TT Covariant Covariant Maybe (Construction Maybe)) e
-> Exactly
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
forall a. a -> Exactly a
Exactly Construction (TT Covariant Covariant Maybe (Construction Maybe)) e
nrt Exactly
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
-> T_U
Covariant
Covariant
(:*:)
(Reverse (TT Covariant Covariant Maybe (Construction Maybe)))
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
-> T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse (TT Covariant Covariant Maybe (Construction Maybe))
<:*:> TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
forall k (t :: k -> *) (a :: k) (u :: k -> *).
t a -> u a -> (t <:*:> u) >>>>>> a
<:*:> ((TT Covariant Covariant Maybe (Construction Maybe)
:. Construction
(TT Covariant Covariant Maybe (Construction Maybe)))
>>> e)
-> Reverse
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
forall k (t :: k -> *) (a :: k). t a -> Reverse t a
Reverse (TT Covariant Covariant Maybe (Construction Maybe)
:. Construction
(TT Covariant Covariant Maybe (Construction Maybe)))
>>> e
lf Reverse
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
-> ((TT Covariant Covariant Maybe (Construction Maybe)
:. Construction
(TT Covariant Covariant Maybe (Construction Maybe)))
>>> e)
-> T_U
Covariant
Covariant
(:*:)
(Reverse (TT Covariant Covariant Maybe (Construction Maybe)))
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
forall k (t :: k -> *) (a :: k) (u :: k -> *).
t a -> u a -> (t <:*:> u) >>>>>> a
<:*:> (TT Covariant Covariant Maybe (Construction Maybe)
:. Construction
(TT Covariant Covariant Maybe (Construction Maybe)))
>>> e
rf
instance Substructure Ancestors (Exactly <:*:> Roses <:*:> List <::> Tape Roses) where
type Substance Ancestors (Exactly <:*:> Roses <:*:> List <::> Tape Roses) = List <::> Tape Roses
substructure :: Lens
(Substance
'Ancestors
(Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe))))))))
((<:.>)
(Tagged 'Ancestors)
(Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a)
a
substructure = ((<:.>)
(Tagged 'Ancestors)
(Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a
-> Store
((<::>)
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))
a)
((<:.>)
(Tagged 'Ancestors)
(Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a))
-> P_Q_T
(->)
Store
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe))))))
((<:.>)
(Tagged 'Ancestors)
(Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a)
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 'Ancestors)
(Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a
-> Store
((<::>)
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))
a)
((<:.>)
(Tagged 'Ancestors)
(Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a))
-> P_Q_T
(->)
Store
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe))))))
((<:.>)
(Tagged 'Ancestors)
(Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a)
a)
-> ((<:.>)
(Tagged 'Ancestors)
(Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a
-> Store
((<::>)
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))
a)
((<:.>)
(Tagged 'Ancestors)
(Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a))
-> P_Q_T
(->)
Store
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe))))))
((<:.>)
(Tagged 'Ancestors)
(Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a)
a
forall (m :: * -> * -> *) a b. Category m => m (m a b) (m a b)
<-- \(<:.>)
(Tagged 'Ancestors)
(Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a
zipper -> case forall (t :: * -> *) a.
Interpreted (->) t =>
((->) < t a) < Primary t a
forall (m :: * -> * -> *) (t :: * -> *) a.
Interpreted m t =>
(m < t a) < Primary t a
run @(->) (T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe))))))
a
-> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
a
:*: (<::>)
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))
a)
-> (Exactly a
:*: T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe))))))
a)
-> Exactly a
:*: (TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
a
:*: (<::>)
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))
a)
forall (source :: * -> * -> *) (target :: * -> * -> *)
(t :: * -> *) a b.
Covariant source target t =>
source a b -> target (t a) (t b)
<-|- T_U
Covariant
Covariant
(:*:)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a
-> Exactly a
:*: T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe))))))
a
forall (m :: * -> * -> *) (t :: * -> *) a.
Interpreted m t =>
(m < t a) < Primary t a
run (T_U
Covariant
Covariant
(:*:)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a
-> Exactly a
:*: T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe))))))
a)
-> T_U
Covariant
Covariant
(:*:)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a
-> Exactly a
:*: T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe))))))
a
forall (m :: * -> * -> *) a b. Category m => m (m a b) (m a b)
<-- (<:.>)
(Tagged 'Ancestors)
(Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a
-> T_U
Covariant
Covariant
(:*:)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a
forall (cat :: * -> * -> *) (t :: (* -> *) -> * -> *) (u :: * -> *)
a.
(Lowerable cat t, Covariant cat cat u) =>
cat (t u a) (u a)
lower (<:.>)
(Tagged 'Ancestors)
(Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a
zipper of
Exactly a
x :*: TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
a
down :*: (<::>)
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))
a
up -> (((:*:)
((<::>)
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))
a)
:. (->)
((<::>)
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))
a))
>>> (<:.>)
(Tagged 'Ancestors)
(Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a)
-> Store
((<::>)
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))
a)
((<:.>)
(Tagged 'Ancestors)
(Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a)
forall s a. (((:*:) s :. (->) s) >>> a) -> Store s a
Store ((((:*:)
((<::>)
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))
a)
:. (->)
((<::>)
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))
a))
>>> (<:.>)
(Tagged 'Ancestors)
(Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a)
-> Store
((<::>)
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))
a)
((<:.>)
(Tagged 'Ancestors)
(Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a))
-> (((:*:)
((<::>)
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))
a)
:. (->)
((<::>)
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))
a))
>>> (<:.>)
(Tagged 'Ancestors)
(Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a)
-> Store
((<::>)
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))
a)
((<:.>)
(Tagged 'Ancestors)
(Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a)
forall (m :: * -> * -> *) a b. Category m => m (m a b) (m a b)
<--- (<::>)
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))
a
up (<::>)
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))
a
-> ((<::>)
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))
a
-> (<:.>)
(Tagged 'Ancestors)
(Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a)
-> ((:*:)
((<::>)
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))
a)
:. (->)
((<::>)
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))
a))
>>> (<:.>)
(Tagged 'Ancestors)
(Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a
forall s a. s -> a -> s :*: a
:*: T_U
Covariant
Covariant
(:*:)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a
-> (<:.>)
(Tagged 'Ancestors)
(Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a
forall (cat :: * -> * -> *) (t :: (* -> *) -> * -> *) (u :: * -> *)
a.
(Liftable cat t, Covariant cat cat u) =>
cat (u a) (t u a)
lift (T_U
Covariant
Covariant
(:*:)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a
-> (<:.>)
(Tagged 'Ancestors)
(Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a)
-> ((<::>)
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))
a
-> T_U
Covariant
Covariant
(:*:)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a)
-> (<::>)
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))
a
-> (<:.>)
(Tagged 'Ancestors)
(Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a
forall (m :: * -> * -> *) b c a.
Semigroupoid m =>
m b c -> m a b -> m a c
. (a -> Exactly a
forall a. a -> Exactly a
Exactly a
x Exactly a
-> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe))))))
a
-> T_U
Covariant
Covariant
(:*:)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a
forall k (t :: k -> *) (a :: k) (u :: k -> *).
t a -> u a -> (t <:*:> u) >>>>>> a
<:*:>) (T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe))))))
a
-> T_U
Covariant
Covariant
(:*:)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a)
-> ((<::>)
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))
a
-> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe))))))
a)
-> (<::>)
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))
a
-> T_U
Covariant
Covariant
(:*:)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a
forall (m :: * -> * -> *) b c a.
Semigroupoid m =>
m b c -> m a b -> m a c
. (TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
a
down TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
a
-> (<::>)
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))
a
-> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe))))))
a
forall k (t :: k -> *) (a :: k) (u :: k -> *).
t a -> u a -> (t <:*:> u) >>>>>> a
<:*:>)
instance Substructure Children (Exactly <:*:> Roses <:*:> List <::> Tape Roses) where
type Substance Children (Exactly <:*:> Roses <:*:> List <::> Tape Roses) = Roses
substructure :: Lens
(Substance
'Children
(Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe))))))))
((<:.>)
(Tagged 'Children)
(Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a)
a
substructure = ((<:.>)
(Tagged 'Children)
(Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a
-> Store
(Roses a)
((<:.>)
(Tagged 'Children)
(Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a))
-> P_Q_T
(->)
Store
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
((<:.>)
(Tagged 'Children)
(Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a)
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 'Children)
(Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a
-> Store
(Roses a)
((<:.>)
(Tagged 'Children)
(Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a))
-> P_Q_T
(->)
Store
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
((<:.>)
(Tagged 'Children)
(Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a)
a)
-> ((<:.>)
(Tagged 'Children)
(Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a
-> Store
(Roses a)
((<:.>)
(Tagged 'Children)
(Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a))
-> P_Q_T
(->)
Store
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
((<:.>)
(Tagged 'Children)
(Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a)
a
forall (m :: * -> * -> *) a b. Category m => m (m a b) (m a b)
<-- \(<:.>)
(Tagged 'Children)
(Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a
zipper -> case forall (t :: * -> *) a.
Interpreted (->) t =>
((->) < t a) < Primary t a
forall (m :: * -> * -> *) (t :: * -> *) a.
Interpreted m t =>
(m < t a) < Primary t a
run @(->) (T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe))))))
a
-> Roses a
:*: TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))
a)
-> (Exactly a
:*: T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe))))))
a)
-> Exactly a
:*: (Roses a
:*: TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))
a)
forall (source :: * -> * -> *) (target :: * -> * -> *)
(t :: * -> *) a b.
Covariant source target t =>
source a b -> target (t a) (t b)
<-|- T_U
Covariant
Covariant
(:*:)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a
-> Exactly a
:*: T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe))))))
a
forall (m :: * -> * -> *) (t :: * -> *) a.
Interpreted m t =>
(m < t a) < Primary t a
run (T_U
Covariant
Covariant
(:*:)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a
-> Exactly a
:*: T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe))))))
a)
-> T_U
Covariant
Covariant
(:*:)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a
-> Exactly a
:*: T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe))))))
a
forall (m :: * -> * -> *) a b. Category m => m (m a b) (m a b)
<-- (<:.>)
(Tagged 'Children)
(Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a
-> T_U
Covariant
Covariant
(:*:)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a
forall (cat :: * -> * -> *) (t :: (* -> *) -> * -> *) (u :: * -> *)
a.
(Lowerable cat t, Covariant cat cat u) =>
cat (t u a) (u a)
lower (<:.>)
(Tagged 'Children)
(Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a
zipper of
Exactly a
x :*: Roses a
down :*: TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))
a
up -> (((:*:) (Roses a) :. (->) (Roses a))
>>> (<:.>)
(Tagged 'Children)
(Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a)
-> Store
(Roses a)
((<:.>)
(Tagged 'Children)
(Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a)
forall s a. (((:*:) s :. (->) s) >>> a) -> Store s a
Store ((((:*:) (Roses a) :. (->) (Roses a))
>>> (<:.>)
(Tagged 'Children)
(Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a)
-> Store
(Roses a)
((<:.>)
(Tagged 'Children)
(Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a))
-> (((:*:) (Roses a) :. (->) (Roses a))
>>> (<:.>)
(Tagged 'Children)
(Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a)
-> Store
(Roses a)
((<:.>)
(Tagged 'Children)
(Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a)
forall (m :: * -> * -> *) a b. Category m => m (m a b) (m a b)
<--- Roses a
down Roses a
-> (Roses a
-> (<:.>)
(Tagged 'Children)
(Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a)
-> ((:*:) (Roses a) :. (->) (Roses a))
>>> (<:.>)
(Tagged 'Children)
(Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a
forall s a. s -> a -> s :*: a
:*: T_U
Covariant
Covariant
(:*:)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a
-> (<:.>)
(Tagged 'Children)
(Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a
forall (cat :: * -> * -> *) (t :: (* -> *) -> * -> *) (u :: * -> *)
a.
(Liftable cat t, Covariant cat cat u) =>
cat (u a) (t u a)
lift (T_U
Covariant
Covariant
(:*:)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a
-> (<:.>)
(Tagged 'Children)
(Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a)
-> (Roses a
-> T_U
Covariant
Covariant
(:*:)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a)
-> Roses a
-> (<:.>)
(Tagged 'Children)
(Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a
forall (m :: * -> * -> *) b c a.
Semigroupoid m =>
m b c -> m a b -> m a c
. (a -> Exactly a
forall a. a -> Exactly a
Exactly a
x Exactly a
-> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe))))))
a
-> T_U
Covariant
Covariant
(:*:)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a
forall k (t :: k -> *) (a :: k) (u :: k -> *).
t a -> u a -> (t <:*:> u) >>>>>> a
<:*:>) (T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe))))))
a
-> T_U
Covariant
Covariant
(:*:)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a)
-> (Roses a
-> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe))))))
a)
-> Roses a
-> T_U
Covariant
Covariant
(:*:)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a
forall (m :: * -> * -> *) b c a.
Semigroupoid m =>
m b c -> m a b -> m a c
. (Roses a
-> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))
a
-> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe))))))
a
forall k (t :: k -> *) (a :: k) (u :: k -> *).
t a -> u a -> (t <:*:> u) >>>>>> a
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))
a
up)
instance Substructure Siblings (Exactly <:*:> Roses <:*:> List <::> Tape Roses) where
type Substance Siblings (Exactly <:*:> Roses <:*:> List <::> Tape Roses) = Maybe <::> (Reverse Roses <:*:> Roses)
substructure :: Lens
(Substance
'Siblings
(Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe))))))))
((<:.>)
(Tagged 'Siblings)
(Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a)
a
substructure = ((<:.>)
(Tagged 'Siblings)
(Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a
-> Store
(TT
Covariant
Covariant
Maybe
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
a)
((<:.>)
(Tagged 'Siblings)
(Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a))
-> P_Q_T
(->)
Store
(TT
Covariant
Covariant
Maybe
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))
((<:.>)
(Tagged 'Siblings)
(Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a)
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 'Siblings)
(Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a
-> Store
(TT
Covariant
Covariant
Maybe
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
a)
((<:.>)
(Tagged 'Siblings)
(Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a))
-> P_Q_T
(->)
Store
(TT
Covariant
Covariant
Maybe
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))
((<:.>)
(Tagged 'Siblings)
(Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a)
a)
-> ((<:.>)
(Tagged 'Siblings)
(Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a
-> Store
(TT
Covariant
Covariant
Maybe
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
a)
((<:.>)
(Tagged 'Siblings)
(Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a))
-> P_Q_T
(->)
Store
(TT
Covariant
Covariant
Maybe
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))
((<:.>)
(Tagged 'Siblings)
(Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a)
a
forall (m :: * -> * -> *) a b. Category m => m (m a b) (m a b)
<-- \(<:.>)
(Tagged 'Siblings)
(Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a
zipper -> case forall (t :: * -> *) a.
Interpreted (->) t =>
((->) < t a) < Primary t a
forall (m :: * -> * -> *) (t :: * -> *) a.
Interpreted m t =>
(m < t a) < Primary t a
run @(->) (T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe))))))
a
-> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
a
:*: TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))
a)
-> (Exactly a
:*: T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe))))))
a)
-> Exactly a
:*: (TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
a
:*: TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))
a)
forall (source :: * -> * -> *) (target :: * -> * -> *)
(t :: * -> *) a b.
Covariant source target t =>
source a b -> target (t a) (t b)
<-|- T_U
Covariant
Covariant
(:*:)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a
-> Exactly a
:*: T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe))))))
a
forall (m :: * -> * -> *) (t :: * -> *) a.
Interpreted m t =>
(m < t a) < Primary t a
run (T_U
Covariant
Covariant
(:*:)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a
-> Exactly a
:*: T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe))))))
a)
-> T_U
Covariant
Covariant
(:*:)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a
-> Exactly a
:*: T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe))))))
a
forall (m :: * -> * -> *) a b. Category m => m (m a b) (m a b)
<-- (<:.>)
(Tagged 'Siblings)
(Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a
-> T_U
Covariant
Covariant
(:*:)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a
forall (cat :: * -> * -> *) (t :: (* -> *) -> * -> *) (u :: * -> *)
a.
(Lowerable cat t, Covariant cat cat u) =>
cat (t u a) (u a)
lower (<:.>)
(Tagged 'Siblings)
(Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a
zipper of
Exactly a
x :*: TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
a
down :*: TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))
a
up -> (((:*:)
(TT
Covariant
Covariant
Maybe
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
a)
:. (->)
(TT
Covariant
Covariant
Maybe
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
a))
>>> (<:.>)
(Tagged 'Siblings)
(Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a)
-> Store
(TT
Covariant
Covariant
Maybe
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
a)
((<:.>)
(Tagged 'Siblings)
(Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a)
forall s a. (((:*:) s :. (->) s) >>> a) -> Store s a
Store
((((:*:)
(TT
Covariant
Covariant
Maybe
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
a)
:. (->)
(TT
Covariant
Covariant
Maybe
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
a))
>>> (<:.>)
(Tagged 'Siblings)
(Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a)
-> Store
(TT
Covariant
Covariant
Maybe
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
a)
((<:.>)
(Tagged 'Siblings)
(Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a))
-> (((:*:)
(TT
Covariant
Covariant
Maybe
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
a)
:. (->)
(TT
Covariant
Covariant
Maybe
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
a))
>>> (<:.>)
(Tagged 'Siblings)
(Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a)
-> Store
(TT
Covariant
Covariant
Maybe
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
a)
((<:.>)
(Tagged 'Siblings)
(Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a)
forall (m :: * -> * -> *) a b. Category m => m (m a b) (m a b)
<--- (((Maybe
:. (Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))
>>> a)
-> TT
Covariant
Covariant
Maybe
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
a
forall k k k k (ct :: k) (ct' :: k) (t :: k -> *) (t' :: k -> k)
(a :: k).
((t :. t') >>> a) -> TT ct ct' t t' a
TT (((Maybe
:. (Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))
>>> a)
-> TT
Covariant
Covariant
Maybe
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
a)
-> ((Maybe
:. (Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))
>>> a)
-> TT
Covariant
Covariant
Maybe
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
a
forall (m :: * -> * -> *) a b. Category m => m (m a b) (m a b)
<---- Lens
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
a)
a
-> T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
a
-> (<:*:>)
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
a
forall (i :: * -> *) source target.
Lens i source target -> source -> i target
view (Lens
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
a)
a
-> T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
a
-> (<:*:>)
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
a)
-> Lens
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
a)
a
-> T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
a
-> (<:*:>)
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
a
forall (m :: * -> * -> *) a b. Category m => m (m a b) (m a b)
<-- forall k (segment :: k) (structure :: * -> *).
(Substructure segment structure, Covariant (->) (->) structure) =>
structure @>>> Substance segment structure
forall (structure :: * -> *).
(Substructure 'Rest structure, Covariant (->) (->) structure) =>
structure @>>> Substance 'Rest structure
sub @Rest (T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
a
-> (<:*:>)
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
a)
-> Maybe
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
a)
-> (Maybe
:. (Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))
>>> a
forall (source :: * -> * -> *) (target :: * -> * -> *)
(t :: * -> *) a b.
Covariant source target t =>
source a b -> target (t a) (t b)
<-|- Lens
Maybe
(List
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
a))
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
a)
-> List
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
a)
-> Maybe
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
a)
forall (i :: * -> *) source target.
Lens i source target -> source -> i target
view (Lens
Maybe
(List
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
a))
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
a)
-> List
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
a)
-> Maybe
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
a))
-> Lens
Maybe
(List
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
a))
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
a)
-> List
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
a)
-> Maybe
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
a)
forall (m :: * -> * -> *) a b. Category m => m (m a b) (m a b)
<-- forall e.
Stack (TT Covariant Covariant Maybe (Construction Maybe)) =>
((Lens
< Topping (TT Covariant Covariant Maybe (Construction Maybe)))
< List e)
< e
forall (structure :: * -> *) e.
Stack structure =>
((Lens < Topping structure) < structure e) < e
top @List (List
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
a)
-> Maybe
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
a))
-> List
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
a)
-> Maybe
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
a)
forall (m :: * -> * -> *) a b. Category m => m (m a b) (m a b)
<-- TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))
a
-> List
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
a)
forall (m :: * -> * -> *) (t :: * -> *) a.
Interpreted m t =>
(m < t a) < Primary t a
run TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))
a
up)
TT
Covariant
Covariant
Maybe
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
a
-> (TT
Covariant
Covariant
Maybe
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
a
-> (<:.>)
(Tagged 'Siblings)
(Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a)
-> ((:*:)
(TT
Covariant
Covariant
Maybe
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
a)
:. (->)
(TT
Covariant
Covariant
Maybe
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
a))
>>> (<:.>)
(Tagged 'Siblings)
(Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a
forall s a. s -> a -> s :*: a
:*: \TT
Covariant
Covariant
Maybe
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
a
siblings -> T_U
Covariant
Covariant
(:*:)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a
-> (<:.>)
(Tagged 'Siblings)
(Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a
forall (cat :: * -> * -> *) (t :: (* -> *) -> * -> *) (u :: * -> *)
a.
(Liftable cat t, Covariant cat cat u) =>
cat (u a) (t u a)
lift (T_U
Covariant
Covariant
(:*:)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a
-> (<:.>)
(Tagged 'Siblings)
(Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a)
-> T_U
Covariant
Covariant
(:*:)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a
-> (<:.>)
(Tagged 'Siblings)
(Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a
forall (m :: * -> * -> *) a b. Category m => m (m a b) (m a b)
<----- a -> Exactly a
forall a. a -> Exactly a
Exactly a
x Exactly a
-> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe))))))
a
-> T_U
Covariant
Covariant
(:*:)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a
forall k (t :: k -> *) (a :: k) (u :: k -> *).
t a -> u a -> (t <:*:> u) >>>>>> a
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
a
down
TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
a
-> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))
a
-> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe))))))
a
forall k (t :: k -> *) (a :: k) (u :: k -> *).
t a -> u a -> (t <:*:> u) >>>>>> a
<:*:> List
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
a)
-> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))
a
forall k k k k (ct :: k) (ct' :: k) (t :: k -> *) (t' :: k -> k)
(a :: k).
((t :. t') >>> a) -> TT ct ct' t t' a
TT (List
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
a)
-> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))
a)
-> List
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
a)
-> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))
a
forall (m :: * -> * -> *) a b. Category m => m (m a b) (m a b)
<--- (Maybe
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
a)
-> Maybe
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
a))
-> Lens
Maybe
(List
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
a))
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
a)
-> List
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
a)
-> List
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
a)
forall (i :: * -> *) target source.
(i target -> i target) -> Lens i source target -> source -> source
mutate ((<:*:>)
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
a
-> Lens
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
a)
a
-> T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
a
-> T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
a
forall (i :: * -> *) source target.
i target -> Lens i source target -> source -> source
replace ((<:*:>)
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
a
-> Lens
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
a)
a
-> T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
a
-> T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
a)
-> ((Maybe
:. (Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))
>>> a)
-> Maybe
(Lens
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
a)
a
-> T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
a
-> T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
a)
forall (source :: * -> * -> *) (target :: * -> * -> *)
(t :: * -> *) a b.
Covariant source target t =>
source a b -> target (t a) (t b)
<-|- TT
Covariant
Covariant
Maybe
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
a
-> (Maybe
:. (Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))
>>> a
forall (m :: * -> * -> *) (t :: * -> *) a.
Interpreted m t =>
(m < t a) < Primary t a
run TT
Covariant
Covariant
Maybe
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
a
siblings Maybe
(Lens
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
a)
a
-> T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
a
-> T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
a)
-> Maybe
(Lens
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
a)
a)
-> Maybe
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
a
-> T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
a)
forall (t :: * -> *) a b.
(Covariant (->) (->) t, Semimonoidal (-->) (:*:) (:*:) t) =>
t (a -> b) -> t a -> t b
<-*- Lens
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
a)
a
-> Maybe
(Lens
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
a)
a)
forall a. a -> Maybe a
Just (Lens
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
a)
a
-> Maybe
(Lens
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
a)
a))
-> Lens
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
a)
a
-> Maybe
(Lens
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
a)
a)
forall (m :: * -> * -> *) a b. Category m => m (m a b) (m a b)
<-- forall k (segment :: k) (structure :: * -> *).
(Substructure segment structure, Covariant (->) (->) structure) =>
structure @>>> Substance segment structure
forall (structure :: * -> *).
(Substructure 'Rest structure, Covariant (->) (->) structure) =>
structure @>>> Substance 'Rest structure
sub @Rest Maybe
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
a
-> T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
a)
-> Maybe
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
a)
-> Maybe
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
a)
forall (t :: * -> *) a b.
(Covariant (->) (->) t, Semimonoidal (-->) (:*:) (:*:) t) =>
t (a -> b) -> t a -> t b
<-*-)
(Lens
Maybe
(List
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
a))
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
a)
-> List
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
a)
-> List
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
a))
-> Lens
Maybe
(List
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
a))
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
a)
-> List
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
a)
-> List
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
a)
forall (m :: * -> * -> *) a b. Category m => m (m a b) (m a b)
<-- forall e.
Stack (TT Covariant Covariant Maybe (Construction Maybe)) =>
((Lens
< Topping (TT Covariant Covariant Maybe (Construction Maybe)))
< List e)
< e
forall (structure :: * -> *) e.
Stack structure =>
((Lens < Topping structure) < structure e) < e
top @List (List
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
a)
-> List
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
a))
-> List
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
a)
-> List
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
a)
forall (m :: * -> * -> *) a b. Category m => m (m a b) (m a b)
<-- TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))
a
-> List
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
a)
forall (m :: * -> * -> *) (t :: * -> *) a.
Interpreted m t =>
(m < t a) < Primary t a
run TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))
a
up
instance Substructure (Focused Tree) (Exactly <:*:> Roses <:*:> List <::> Tape Roses) where
type Substance (Focused Tree) (Exactly <:*:> Roses <:*:> List <::> Tape Roses) = Construction List
substructure :: Lens
(Substance
('Focused 'Tree)
(Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe))))))))
((<:.>)
(Tagged ('Focused 'Tree))
(Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a)
a
substructure = ((<:.>)
(Tagged ('Focused 'Tree))
(Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a
-> Store
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) a)
((<:.>)
(Tagged ('Focused 'Tree))
(Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a))
-> P_Q_T
(->)
Store
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
((<:.>)
(Tagged ('Focused 'Tree))
(Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a)
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 ('Focused 'Tree))
(Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a
-> Store
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) a)
((<:.>)
(Tagged ('Focused 'Tree))
(Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a))
-> P_Q_T
(->)
Store
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
((<:.>)
(Tagged ('Focused 'Tree))
(Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a)
a)
-> ((<:.>)
(Tagged ('Focused 'Tree))
(Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a
-> Store
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) a)
((<:.>)
(Tagged ('Focused 'Tree))
(Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a))
-> P_Q_T
(->)
Store
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
((<:.>)
(Tagged ('Focused 'Tree))
(Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a)
a
forall (m :: * -> * -> *) a b. Category m => m (m a b) (m a b)
<-- \(<:.>)
(Tagged ('Focused 'Tree))
(Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a
zipper -> case forall (t :: * -> *) a.
Interpreted (->) t =>
((->) < t a) < Primary t a
forall (m :: * -> * -> *) (t :: * -> *) a.
Interpreted m t =>
(m < t a) < Primary t a
run @(->) (T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe))))))
a
-> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
a
:*: TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))
a)
-> (Exactly a
:*: T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe))))))
a)
-> Exactly a
:*: (TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
a
:*: TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))
a)
forall (source :: * -> * -> *) (target :: * -> * -> *)
(t :: * -> *) a b.
Covariant source target t =>
source a b -> target (t a) (t b)
<-|- T_U
Covariant
Covariant
(:*:)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a
-> Exactly a
:*: T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe))))))
a
forall (m :: * -> * -> *) (t :: * -> *) a.
Interpreted m t =>
(m < t a) < Primary t a
run (T_U
Covariant
Covariant
(:*:)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a
-> Exactly a
:*: T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe))))))
a)
-> T_U
Covariant
Covariant
(:*:)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a
-> Exactly a
:*: T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe))))))
a
forall (m :: * -> * -> *) a b. Category m => m (m a b) (m a b)
<-- (<:.>)
(Tagged ('Focused 'Tree))
(Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a
-> T_U
Covariant
Covariant
(:*:)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a
forall (cat :: * -> * -> *) (t :: (* -> *) -> * -> *) (u :: * -> *)
a.
(Lowerable cat t, Covariant cat cat u) =>
cat (t u a) (u a)
lower (<:.>)
(Tagged ('Focused 'Tree))
(Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a
zipper of
Exactly a
x :*: TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
a
children :*: TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))
a
up -> (((:*:)
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) a)
:. (->)
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) a))
>>> (<:.>)
(Tagged ('Focused 'Tree))
(Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a)
-> Store
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) a)
((<:.>)
(Tagged ('Focused 'Tree))
(Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a)
forall s a. (((:*:) s :. (->) s) >>> a) -> Store s a
Store ((((:*:)
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) a)
:. (->)
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) a))
>>> (<:.>)
(Tagged ('Focused 'Tree))
(Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a)
-> Store
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) a)
((<:.>)
(Tagged ('Focused 'Tree))
(Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a))
-> (((:*:)
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) a)
:. (->)
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) a))
>>> (<:.>)
(Tagged ('Focused 'Tree))
(Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a)
-> Store
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) a)
((<:.>)
(Tagged ('Focused 'Tree))
(Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a)
forall (m :: * -> * -> *) a b. Category m => m (m a b) (m a b)
<--- a
-> ((TT Covariant Covariant Maybe (Construction Maybe)
:. Construction
(TT Covariant Covariant Maybe (Construction Maybe)))
>>> a)
-> Construction
(TT Covariant Covariant Maybe (Construction Maybe)) a
forall (t :: * -> *) a.
a -> ((t :. Construction t) >>> a) -> Construction t a
Construct a
x (TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
a
-> (TT Covariant Covariant Maybe (Construction Maybe)
:. Construction
(TT Covariant Covariant Maybe (Construction Maybe)))
>>> a
forall (m :: * -> * -> *) (t :: * -> *) a.
Interpreted m t =>
(m < t a) < Primary t a
run TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
a
children) Construction (TT Covariant Covariant Maybe (Construction Maybe)) a
-> (Construction
(TT Covariant Covariant Maybe (Construction Maybe)) a
-> (<:.>)
(Tagged ('Focused 'Tree))
(Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a)
-> ((:*:)
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) a)
:. (->)
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) a))
>>> (<:.>)
(Tagged ('Focused 'Tree))
(Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a
forall s a. s -> a -> s :*: a
:*: T_U
Covariant
Covariant
(:*:)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a
-> (<:.>)
(Tagged ('Focused 'Tree))
(Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a
forall (cat :: * -> * -> *) (t :: (* -> *) -> * -> *) (u :: * -> *)
a.
(Liftable cat t, Covariant cat cat u) =>
cat (u a) (t u a)
lift (T_U
Covariant
Covariant
(:*:)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a
-> (<:.>)
(Tagged ('Focused 'Tree))
(Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a)
-> (Construction
(TT Covariant Covariant Maybe (Construction Maybe)) a
-> T_U
Covariant
Covariant
(:*:)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a)
-> Construction
(TT Covariant Covariant Maybe (Construction Maybe)) a
-> (<:.>)
(Tagged ('Focused 'Tree))
(Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a
forall (m :: * -> * -> *) b c a.
Semigroupoid m =>
m b c -> m a b -> m a c
. (Exactly a
:*: T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe))))))
a)
-> T_U
Covariant
Covariant
(:*:)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a
forall k k k k k (ct :: k) (cu :: k) (p :: k -> k -> *)
(t :: k -> k) (u :: k -> k) (a :: k).
p (t a) (u a) -> T_U ct cu p t u a
T_U ((Exactly a
:*: T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe))))))
a)
-> T_U
Covariant
Covariant
(:*:)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a)
-> (Construction
(TT Covariant Covariant Maybe (Construction Maybe)) a
-> Exactly a
:*: T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe))))))
a)
-> Construction
(TT Covariant Covariant Maybe (Construction Maybe)) a
-> T_U
Covariant
Covariant
(:*:)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
a
forall (m :: * -> * -> *) b c a.
Semigroupoid m =>
m b c -> m a b -> m a c
. ((TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
a
-> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))
a
-> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe))))))
a
forall k (t :: k -> *) (a :: k) (u :: k -> *).
t a -> u a -> (t <:*:> u) >>>>>> a
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))
a
up) (TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
a
-> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe))))))
a)
-> (Exactly a
:*: TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
a)
-> Exactly a
:*: T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe))))))
a
forall (source :: * -> * -> *) (target :: * -> * -> *)
(t :: * -> *) a b.
Covariant source target t =>
source a b -> target (t a) (t b)
<-|-) ((Exactly a
:*: TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
a)
-> Exactly a
:*: T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe))))))
a)
-> (Construction
(TT Covariant Covariant Maybe (Construction Maybe)) a
-> Exactly a
:*: TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
a)
-> Construction
(TT Covariant Covariant Maybe (Construction Maybe)) a
-> Exactly a
:*: T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe))))))
a
forall (m :: * -> * -> *) b c a.
Semigroupoid m =>
m b c -> m a b -> m a c
. T_U
Covariant
Covariant
(:*:)
Exactly
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
a
-> Exactly a
:*: TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
a
forall (m :: * -> * -> *) (t :: * -> *) a.
Interpreted m t =>
(m < t a) < Primary t a
run (T_U
Covariant
Covariant
(:*:)
Exactly
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
a
-> Exactly a
:*: TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
a)
-> (Construction
(TT Covariant Covariant Maybe (Construction Maybe)) a
-> T_U
Covariant
Covariant
(:*:)
Exactly
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
a)
-> Construction
(TT Covariant Covariant Maybe (Construction Maybe)) a
-> Exactly a
:*: TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
a
forall (m :: * -> * -> *) b c a.
Semigroupoid m =>
m b c -> m a b -> m a c
. Construction (TT Covariant Covariant Maybe (Construction Maybe)) a
-> T_U
Covariant
Covariant
(:*:)
Exactly
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
a
forall (m :: * -> * -> *) (t :: * -> *) a.
Interpreted m t =>
(m < t a) < Primary t a
run
instance Substructure (Focused Forest) (Exactly <:*:> Roses <:*:> List <::> Tape Roses) where
type Substance (Focused Forest) (Exactly <:*:> Roses <:*:> List <::> Tape Roses) = Tape List <::> Nonempty Rose
substructure :: forall e . Lens (Tape List <::> Nonempty Rose)
((Tagged (Focused Forest) <:.> (Exactly <:*:> Roses <:*:> List <::> Tape Roses)) > e) e
substructure :: Lens
(Tape (TT Covariant Covariant Maybe (Construction Maybe))
<::> Nonempty Rose)
((Tagged ('Focused 'Forest)
<:.> (Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe))))))))
> e)
e
substructure = (((Tagged ('Focused 'Forest)
<:.> (Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe))))))))
> e)
-> Store
(TT
Covariant
Covariant
(Tape (TT Covariant Covariant Maybe (Construction Maybe)))
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
e)
((Tagged ('Focused 'Forest)
<:.> (Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe))))))))
> e))
-> P_Q_T
(->)
Store
(TT
Covariant
Covariant
(Tape (TT Covariant Covariant Maybe (Construction Maybe)))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
((Tagged ('Focused 'Forest)
<:.> (Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe))))))))
> e)
e
forall (p :: * -> * -> *) (q :: * -> * -> *) (t :: * -> *) a b.
p a (q (t b) a) -> P_Q_T p q t a b
P_Q_T ((((Tagged ('Focused 'Forest)
<:.> (Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe))))))))
> e)
-> Store
(TT
Covariant
Covariant
(Tape (TT Covariant Covariant Maybe (Construction Maybe)))
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
e)
((Tagged ('Focused 'Forest)
<:.> (Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe))))))))
> e))
-> P_Q_T
(->)
Store
(TT
Covariant
Covariant
(Tape (TT Covariant Covariant Maybe (Construction Maybe)))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
((Tagged ('Focused 'Forest)
<:.> (Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe))))))))
> e)
e)
-> (((Tagged ('Focused 'Forest)
<:.> (Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe))))))))
> e)
-> Store
(TT
Covariant
Covariant
(Tape (TT Covariant Covariant Maybe (Construction Maybe)))
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
e)
((Tagged ('Focused 'Forest)
<:.> (Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe))))))))
> e))
-> P_Q_T
(->)
Store
(TT
Covariant
Covariant
(Tape (TT Covariant Covariant Maybe (Construction Maybe)))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
((Tagged ('Focused 'Forest)
<:.> (Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe))))))))
> e)
e
forall (m :: * -> * -> *) a b. Category m => m (m a b) (m a b)
<-- \(Tagged ('Focused 'Forest)
<:.> (Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe))))))))
> e
zipper -> case forall (t :: * -> *) a.
Interpreted (->) t =>
((->) < t a) < Primary t a
forall (m :: * -> * -> *) (t :: * -> *) a.
Interpreted m t =>
(m < t a) < Primary t a
run @(->) (T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe))))))
e
-> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
e
:*: TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))
e)
-> (Exactly e
:*: T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe))))))
e)
-> Exactly e
:*: (TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
e
:*: TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))
e)
forall (source :: * -> * -> *) (target :: * -> * -> *)
(t :: * -> *) a b.
Covariant source target t =>
source a b -> target (t a) (t b)
<-|- forall (t :: * -> *) a.
Interpreted (->) t =>
((->) < t a) < Primary t a
forall (m :: * -> * -> *) (t :: * -> *) a.
Interpreted m t =>
(m < t a) < Primary t a
run @(->) (T_U
Covariant
Covariant
(:*:)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e
-> Exactly e
:*: T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe))))))
e)
-> T_U
Covariant
Covariant
(:*:)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e
-> Exactly e
:*: T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe))))))
e
forall (m :: * -> * -> *) a b. Category m => m (m a b) (m a b)
<-- ((Tagged ('Focused 'Forest)
<:.> (Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe))))))))
> e)
-> T_U
Covariant
Covariant
(:*:)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e
forall (cat :: * -> * -> *) (t :: (* -> *) -> * -> *) (u :: * -> *)
a.
(Lowerable cat t, Covariant cat cat u) =>
cat (t u a) (u a)
lower (Tagged ('Focused 'Forest)
<:.> (Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe))))))))
> e
zipper of
Exactly e
root :*: TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
e
down :*: TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))
e
up -> (((:*:)
(TT
Covariant
Covariant
(Tape (TT Covariant Covariant Maybe (Construction Maybe)))
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
e)
:. (->)
(TT
Covariant
Covariant
(Tape (TT Covariant Covariant Maybe (Construction Maybe)))
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
e))
>>> ((Tagged ('Focused 'Forest)
<:.> (Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe))))))))
> e))
-> Store
(TT
Covariant
Covariant
(Tape (TT Covariant Covariant Maybe (Construction Maybe)))
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
e)
((Tagged ('Focused 'Forest)
<:.> (Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe))))))))
> e)
forall s a. (((:*:) s :. (->) s) >>> a) -> Store s a
Store ((((:*:)
(TT
Covariant
Covariant
(Tape (TT Covariant Covariant Maybe (Construction Maybe)))
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
e)
:. (->)
(TT
Covariant
Covariant
(Tape (TT Covariant Covariant Maybe (Construction Maybe)))
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
e))
>>> ((Tagged ('Focused 'Forest)
<:.> (Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe))))))))
> e))
-> Store
(TT
Covariant
Covariant
(Tape (TT Covariant Covariant Maybe (Construction Maybe)))
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
e)
((Tagged ('Focused 'Forest)
<:.> (Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe))))))))
> e))
-> (((:*:)
(TT
Covariant
Covariant
(Tape (TT Covariant Covariant Maybe (Construction Maybe)))
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
e)
:. (->)
(TT
Covariant
Covariant
(Tape (TT Covariant Covariant Maybe (Construction Maybe)))
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
e))
>>> ((Tagged ('Focused 'Forest)
<:.> (Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe))))))))
> e))
-> Store
(TT
Covariant
Covariant
(Tape (TT Covariant Covariant Maybe (Construction Maybe)))
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
e)
((Tagged ('Focused 'Forest)
<:.> (Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe))))))))
> e)
forall (m :: * -> * -> *) a b. Category m => m (m a b) (m a b)
<--- ((Tape (TT Covariant Covariant Maybe (Construction Maybe))
:. Construction
(TT Covariant Covariant Maybe (Construction Maybe)))
>>> e)
-> TT
Covariant
Covariant
(Tape (TT Covariant Covariant Maybe (Construction Maybe)))
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
e
forall k k k k (ct :: k) (ct' :: k) (t :: k -> *) (t' :: k -> k)
(a :: k).
((t :. t') >>> a) -> TT ct ct' t t' a
TT (Tape (TT Covariant Covariant Maybe (Construction Maybe))
:. Construction
(TT Covariant Covariant Maybe (Construction Maybe)))
>>> e
Tape (TT Covariant Covariant Maybe (Construction Maybe))
> Nonempty Rose e
focused TT
Covariant
Covariant
(Tape (TT Covariant Covariant Maybe (Construction Maybe)))
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
e
-> (TT
Covariant
Covariant
(Tape (TT Covariant Covariant Maybe (Construction Maybe)))
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
e
-> (Tagged ('Focused 'Forest)
<:.> (Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe))))))))
> e)
-> ((:*:)
(TT
Covariant
Covariant
(Tape (TT Covariant Covariant Maybe (Construction Maybe)))
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
e)
:. (->)
(TT
Covariant
Covariant
(Tape (TT Covariant Covariant Maybe (Construction Maybe)))
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
e))
>>> ((Tagged ('Focused 'Forest)
<:.> (Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe))))))))
> e)
forall s a. s -> a -> s :*: a
:*: T_U
Covariant
Covariant
(:*:)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e
-> (Tagged ('Focused 'Forest)
<:.> (Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe))))))))
> e
forall (cat :: * -> * -> *) (t :: (* -> *) -> * -> *) (u :: * -> *)
a.
(Liftable cat t, Covariant cat cat u) =>
cat (u a) (t u a)
lift (T_U
Covariant
Covariant
(:*:)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e
-> (Tagged ('Focused 'Forest)
<:.> (Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe))))))))
> e)
-> (TT
Covariant
Covariant
(Tape (TT Covariant Covariant Maybe (Construction Maybe)))
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
e
-> T_U
Covariant
Covariant
(:*:)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e)
-> TT
Covariant
Covariant
(Tape (TT Covariant Covariant Maybe (Construction Maybe)))
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
e
-> (Tagged ('Focused 'Forest)
<:.> (Exactly
<:*:> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe))))))))
> e
forall (m :: * -> * -> *) b c a.
Semigroupoid m =>
m b c -> m a b -> m a c
. TT
Covariant
Covariant
(T_U
Covariant
Covariant
(:*:)
Exactly
(T_U
Covariant
Covariant
(:*:)
(Reverse (TT Covariant Covariant Maybe (Construction Maybe)))
(TT Covariant Covariant Maybe (Construction Maybe))))
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
e
-> T_U
Covariant
Covariant
(:*:)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(T_U
Covariant
Covariant
(:*:)
Exactly
(T_U
Covariant
Covariant
(:*:)
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe))))))))
e
(<::>)
(Tape (TT Covariant Covariant Maybe (Construction Maybe)))
(Nonempty Rose)
e
-> T_U
Covariant
Covariant
(:*:)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e
updated where
focused :: Tape List > Nonempty Rose e
focused :: Tape (TT Covariant Covariant Maybe (Construction Maybe))
> Nonempty Rose e
focused = case Maybe
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e)
-> Maybe
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e)
forall (m :: * -> * -> *) (t :: * -> *) a.
Interpreted m t =>
(m < t a) < Primary t a
run (Maybe
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e)
-> Maybe
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e))
-> Maybe
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e)
-> Maybe
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e)
forall (m :: * -> * -> *) a b. Category m => m (m a b) (m a b)
<--- Lens
Maybe
(List
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e))
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e)
-> List
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e)
-> Maybe
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e)
forall (i :: * -> *) source target.
Lens i source target -> source -> i target
view (Lens
Maybe
(List
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e))
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e)
-> List
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e)
-> Maybe
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e))
-> Lens
Maybe
(List
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e))
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e)
-> List
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e)
-> Maybe
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e)
forall (m :: * -> * -> *) a b. Category m => m (m a b) (m a b)
<-- forall e.
Stack (TT Covariant Covariant Maybe (Construction Maybe)) =>
((Lens
< Topping (TT Covariant Covariant Maybe (Construction Maybe)))
< List e)
< e
forall (structure :: * -> *) e.
Stack structure =>
((Lens < Topping structure) < structure e) < e
top @List (List
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e)
-> Maybe
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e))
-> List
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e)
-> Maybe
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e)
forall (m :: * -> * -> *) a b. Category m => m (m a b) (m a b)
<-- TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))
e
-> List
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e)
forall (m :: * -> * -> *) (t :: * -> *) a.
Interpreted m t =>
(m < t a) < Primary t a
run TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))
e
up of
Maybe
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e)
Nothing -> Construction (TT Covariant Covariant Maybe (Construction Maybe)) e
-> Exactly
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
forall a. a -> Exactly a
Exactly Construction (TT Covariant Covariant Maybe (Construction Maybe)) e
Nonempty Rose e
tree Exactly
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
-> T_U
Covariant
Covariant
(:*:)
(Reverse (TT Covariant Covariant Maybe (Construction Maybe)))
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
-> (Tape (TT Covariant Covariant Maybe (Construction Maybe))
:. Construction
(TT Covariant Covariant Maybe (Construction Maybe)))
>>> e
forall k (t :: k -> *) (a :: k) (u :: k -> *).
t a -> u a -> (t <:*:> u) >>>>>> a
<:*:> List
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
-> Reverse
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
forall k (t :: k -> *) (a :: k). t a -> Reverse t a
Reverse List
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
forall (t :: * -> *) a. Emptiable t => t a
empty Reverse
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
-> List
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
-> T_U
Covariant
Covariant
(:*:)
(Reverse (TT Covariant Covariant Maybe (Construction Maybe)))
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
forall k (t :: k -> *) (a :: k) (u :: k -> *).
t a -> u a -> (t <:*:> u) >>>>>> a
<:*:> List
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
forall (t :: * -> *) a. Emptiable t => t a
empty
Just (T_U (Exactly e
_ :*: T_U (Reverse TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
e
left :*: TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
e
right)))
-> Construction (TT Covariant Covariant Maybe (Construction Maybe)) e
-> Exactly
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
forall a. a -> Exactly a
Exactly Construction (TT Covariant Covariant Maybe (Construction Maybe)) e
Nonempty Rose e
tree Exactly
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
-> T_U
Covariant
Covariant
(:*:)
(Reverse (TT Covariant Covariant Maybe (Construction Maybe)))
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
-> (Tape (TT Covariant Covariant Maybe (Construction Maybe))
:. Construction
(TT Covariant Covariant Maybe (Construction Maybe)))
>>> e
forall k (t :: k -> *) (a :: k) (u :: k -> *).
t a -> u a -> (t <:*:> u) >>>>>> a
<:*:> List
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
-> Reverse
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
forall k (t :: k -> *) (a :: k). t a -> Reverse t a
Reverse (TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
e
-> List
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
forall (m :: * -> * -> *) (t :: * -> *) a.
Interpreted m t =>
(m < t a) < Primary t a
run TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
e
left) Reverse
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
-> List
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
-> T_U
Covariant
Covariant
(:*:)
(Reverse (TT Covariant Covariant Maybe (Construction Maybe)))
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
forall k (t :: k -> *) (a :: k) (u :: k -> *).
t a -> u a -> (t <:*:> u) >>>>>> a
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
e
-> List
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
forall (m :: * -> * -> *) (t :: * -> *) a.
Interpreted m t =>
(m < t a) < Primary t a
run TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
e
right
tree :: Nonempty Rose e
tree :: Nonempty Rose e
tree = e
-> List
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
-> Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e
forall (t :: * -> *) a.
a -> ((t :. Construction t) >>> a) -> Construction t a
Construct e
root (List
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
-> Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
-> List
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
-> Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e
forall (m :: * -> * -> *) a b. Category m => m (m a b) (m a b)
<-- TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
e
-> List
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
forall (m :: * -> * -> *) (t :: * -> *) a.
Interpreted m t =>
(m < t a) < Primary t a
run TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
e
down
updated :: (Tape List <::> Nonempty Rose) e -> (Exactly <:*:> Roses <:*:> List <::> Tape Roses) e
updated :: (<::>)
(Tape (TT Covariant Covariant Maybe (Construction Maybe)))
(Nonempty Rose)
e
-> T_U
Covariant
Covariant
(:*:)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e
updated (TT (T_U (Exactly (Construct new_root new_down) :*: T_U (Reverse List (Nonempty Rose e)
left_ :*: List (Nonempty Rose e)
right_)))) =
e -> Exactly e
forall a. a -> Exactly a
Exactly e
new_root Exactly e
-> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe))))))
e
-> T_U
Covariant
Covariant
(:*:)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e
forall k (t :: k -> *) (a :: k) (u :: k -> *).
t a -> u a -> (t <:*:> u) >>>>>> a
<:*:> List
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
-> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
e
forall (m :: * -> * -> *) (t :: * -> *) a.
Interpreted m t =>
(m < Primary t a) < t a
unite List
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
new_down TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
e
-> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))
e
-> T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe))))))
e
forall k (t :: k -> *) (a :: k) (u :: k -> *).
t a -> u a -> (t <:*:> u) >>>>>> a
<:*:> List
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e)
-> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))
e
forall k k k k (ct :: k) (ct' :: k) (t :: k -> *) (t' :: k -> k)
(a :: k).
((t :. t') >>> a) -> TT ct ct' t t' a
TT
(List
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e)
-> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))
e)
-> List
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e)
-> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))
e
forall (m :: * -> * -> *) a b. Category m => m (m a b) (m a b)
<--- (Maybe
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e)
-> Maybe
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e))
-> Lens
Maybe
(List
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e))
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e)
-> List
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e)
-> List
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e)
forall (i :: * -> *) target source.
(i target -> i target) -> Lens i source target -> source -> source
mutate ((Maybe
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e)
-> Maybe
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e))
-> Lens
Maybe
(List
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e))
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e)
-> List
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e)
-> List
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e))
-> (Maybe
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e)
-> Maybe
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e))
-> Lens
Maybe
(List
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e))
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e)
-> List
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e)
-> List
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e)
forall (m :: * -> * -> *) a b. Category m => m (m a b) (m a b)
<-- (T_U
Covariant
Covariant
(:*:)
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e
-> T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e
-> T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e
update_sides (TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
e
-> Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e
forall k (t :: k -> *) (a :: k). t a -> Reverse t a
Reverse (List
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
-> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
e
forall k k k k (ct :: k) (ct' :: k) (t :: k -> *) (t' :: k -> k)
(a :: k).
((t :. t') >>> a) -> TT ct ct' t t' a
TT List
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
List (Nonempty Rose e)
left_) Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e
-> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
e
-> T_U
Covariant
Covariant
(:*:)
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e
forall k (t :: k -> *) (a :: k) (u :: k -> *).
t a -> u a -> (t <:*:> u) >>>>>> a
<:*:> List
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
-> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
e
forall k k k k (ct :: k) (ct' :: k) (t :: k -> *) (t' :: k -> k)
(a :: k).
((t :. t') >>> a) -> TT ct ct' t t' a
TT List
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
List (Nonempty Rose e)
right_) (T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e
-> T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e)
-> Maybe
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e)
-> Maybe
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e)
forall (source :: * -> * -> *) (target :: * -> * -> *)
(t :: * -> *) a b.
Covariant source target t =>
source a b -> target (t a) (t b)
<-|-) (Lens
Maybe
(List
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e))
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e)
-> List
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e)
-> List
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e))
-> Lens
Maybe
(List
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e))
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e)
-> List
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e)
-> List
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e)
forall (m :: * -> * -> *) a b. Category m => m (m a b) (m a b)
<-- forall e.
Stack (TT Covariant Covariant Maybe (Construction Maybe)) =>
((Lens
< Topping (TT Covariant Covariant Maybe (Construction Maybe)))
< List e)
< e
forall (structure :: * -> *) e.
Stack structure =>
((Lens < Topping structure) < structure e) < e
top @List (List
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e)
-> List
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e))
-> List
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e)
-> List
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e)
forall (m :: * -> * -> *) a b. Category m => m (m a b) (m a b)
<-- TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))
e
-> List
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e)
forall (m :: * -> * -> *) (t :: * -> *) a.
Interpreted m t =>
(m < t a) < Primary t a
run TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))
e
up
update_sides :: (Reverse Roses <:*:> Roses) e -> Tape Roses e -> Tape Roses e
update_sides :: T_U
Covariant
Covariant
(:*:)
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e
-> T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e
-> T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e
update_sides T_U
Covariant
Covariant
(:*:)
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e
sides T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e
tape = T_U
Covariant
Covariant
(:*:)
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e
-> Lens
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e)
e
-> T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e
-> T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e
forall (i :: * -> *) source target.
i target -> Lens i source target -> source -> source
replace (T_U
Covariant
Covariant
(:*:)
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e
-> Lens
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e)
e
-> T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e
-> T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e)
-> T_U
Covariant
Covariant
(:*:)
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e
-> Lens
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e)
e
-> T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e
-> T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e
forall (m :: * -> * -> *) a b. Category m => m (m a b) (m a b)
<-- T_U
Covariant
Covariant
(:*:)
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e
sides (Lens
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e)
e
-> T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e
-> T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e)
-> Lens
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e)
e
-> T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e
-> T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e
forall (m :: * -> * -> *) a b. Category m => m (m a b) (m a b)
<-- forall k (segment :: k) (structure :: * -> *).
(Substructure segment structure, Covariant (->) (->) structure) =>
structure @>>> Substance segment structure
forall (structure :: * -> *).
(Substructure 'Rest structure, Covariant (->) (->) structure) =>
structure @>>> Substance 'Rest structure
sub @Rest (T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e
-> T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e)
-> T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e
-> T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e
forall (m :: * -> * -> *) a b. Category m => m (m a b) (m a b)
<-- T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
<:*:> TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e
tape
instance Slidable Up (Exactly <:*:> Roses <:*:> List <::> Tape Roses) where
type Sliding Up (Exactly <:*:> Roses <:*:> List <::> Tape Roses) = Maybe
slide :: forall e . State > Zipper Rose e :> Maybe >>> ()
slide :: ((State > Zipper Rose e) :> Maybe) >>> ()
slide = (:>)
(State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e))
Maybe
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
-> (:>)
(State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e))
Maybe
()
forall (t :: * -> *) a. Covariant (->) (->) t => t a -> t ()
void ((:>)
(State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e))
Maybe
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
-> (:>)
(State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e))
Maybe
())
-> (Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e
-> (:>)
(State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e))
Maybe
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e))
-> Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e
-> (:>)
(State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e))
Maybe
()
forall (m :: * -> * -> *) b c a.
Semigroupoid m =>
m b c -> m a b -> m a c
. ((->)
< State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e)
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e))
< (:>)
(State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e))
Maybe
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
forall (m :: * -> * -> *) (t :: * -> *) (u :: * -> *) a.
(Monadic m t, Pointable u) =>
(m < t a) < (:>) t u a
wrap (((->)
< State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e)
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e))
< (:>)
(State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e))
Maybe
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e))
-> (Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e
-> State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e)
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e))
-> Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e
-> (:>)
(State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e))
Maybe
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
forall (m :: * -> * -> *) b c a.
Semigroupoid m =>
m b c -> m a b -> m a c
. Lens
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
(Zipper Rose e)
e
-> State
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
-> State
(Zipper Rose e)
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
forall bg ls (u :: * -> *) result.
Lens u bg ls -> State (u ls) result -> State bg result
zoom @(Zipper Rose e) (forall k (segment :: k) (structure :: * -> *).
(Substructure segment structure, Covariant (->) (->) structure) =>
structure @>>> Substance segment structure
forall (structure :: * -> *).
(Substructure ('Focused 'Tree) structure,
Covariant (->) (->) structure) =>
structure @>>> Substance ('Focused 'Tree) structure
sub @(Focused Tree)) (State
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
-> State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e)
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e))
-> (Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e
-> State
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e))
-> Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e
-> State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e)
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
forall (m :: * -> * -> *) b c a.
Semigroupoid m =>
m b c -> m a b -> m a c
. (Construction (TT Covariant Covariant Maybe (Construction Maybe)) e
-> Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
-> State
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
forall s (t :: * -> *). Stateful s t => (s -> s) -> t s
change ((Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e
-> Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
-> State
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e))
-> (Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e
-> Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e
-> Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
-> Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e
-> State
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
forall (m :: * -> * -> *) b c a.
Semigroupoid m =>
m b c -> m a b -> m a c
. Construction (TT Covariant Covariant Maybe (Construction Maybe)) e
-> Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e
-> Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e
forall (m :: * -> * -> *) a i. Kernel m => m a (m i a)
constant (Construction (TT Covariant Covariant Maybe (Construction Maybe)) e
-> (:>)
(State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e))
Maybe
())
-> (:>)
(State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e))
Maybe
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
-> (:>)
(State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e))
Maybe
()
forall (source :: * -> * -> *) (t :: * -> *) a b.
Bindable source t =>
source a (t b) -> source (t a) (t b)
======<< Construction (TT Covariant Covariant Maybe (Construction Maybe)) e
-> T_U
Covariant
Covariant
(:*:)
Exactly
(T_U
Covariant
Covariant
(:*:)
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))
e
-> Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e
Nonempty Rose e
-> Tape
(TT Covariant Covariant Maybe (Construction Maybe)
<::> Nonempty Rose)
e
-> Nonempty Rose e
merging
(Construction (TT Covariant Covariant Maybe (Construction Maybe)) e
-> Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e
-> Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
-> (:>)
(State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e))
Maybe
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
-> (:>)
(State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e))
Maybe
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e
-> Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
forall (source :: * -> * -> *) (target :: * -> * -> *)
(t :: * -> *) a b.
Covariant source target t =>
source a b -> target (t a) (t b)
<-|---- ((->)
< State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e)
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e))
< (:>)
(State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e))
Maybe
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
forall (m :: * -> * -> *) (t :: * -> *) (u :: * -> *) a.
(Monadic m t, Pointable u) =>
(m < t a) < (:>) t u a
wrap (((->)
< State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e)
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e))
< (:>)
(State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e))
Maybe
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e))
-> ((->)
< State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e)
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e))
< (:>)
(State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e))
Maybe
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
forall (m :: * -> * -> *) a b. Category m => m (m a b) (m a b)
<--- forall bg ls (u :: * -> *) result.
Lens u bg ls -> State (u ls) result -> State bg result
forall ls (u :: * -> *) result.
Lens u (Zipper Rose e) ls
-> State (u ls) result -> State (Zipper Rose e) result
zoom @(Zipper Rose e) (Lens
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e)
e
-> State
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
-> State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e)
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e))
-> Lens
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e)
e
-> State
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
-> State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e)
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
forall (m :: * -> * -> *) a b. Category m => m (m a b) (m a b)
<-- forall k (segment :: k) (structure :: * -> *).
(Substructure segment structure, Covariant (->) (->) structure) =>
structure @>>> Substance segment structure
forall (structure :: * -> *).
(Substructure ('Focused 'Tree) structure,
Covariant (->) (->) structure) =>
structure @>>> Substance ('Focused 'Tree) structure
sub @(Focused Tree) (State
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
-> State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e)
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e))
-> State
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
-> State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e)
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
forall (m :: * -> * -> *) a b. Category m => m (m a b) (m a b)
<-- State
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
forall s (t :: * -> *). Stateful s t => t s
current
(:>)
(State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e))
Maybe
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e
-> Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
-> (:>)
(State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e))
Maybe
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e)
-> (:>)
(State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e))
Maybe
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
forall (t :: * -> *) a b.
(Covariant (->) (->) t, Semimonoidal (-->) (:*:) (:*:) t) =>
t (a -> b) -> t a -> t b
<-*---- Maybe
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e)
-> (:>)
(State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e))
Maybe
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e)
forall (cat :: * -> * -> *) (t :: (* -> *) -> * -> *) (u :: * -> *)
a.
(Liftable cat t, Covariant cat cat u) =>
cat (u a) (t u a)
lift (Maybe
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e)
-> (:>)
(State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e))
Maybe
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e))
-> (Exactly
(Maybe
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e))
-> Maybe
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e))
-> Exactly
(Maybe
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e))
-> (:>)
(State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e))
Maybe
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e)
forall (m :: * -> * -> *) b c a.
Semigroupoid m =>
m b c -> m a b -> m a c
. Exactly
(Maybe
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e))
-> Maybe
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e)
forall (t :: * -> *) a. Extractable t => t a -> a
extract (Exactly
(Maybe
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e))
-> (:>)
(State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e))
Maybe
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e))
-> (:>)
(State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e))
Maybe
(Exactly
(Maybe
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e)))
-> (:>)
(State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e))
Maybe
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e)
forall (source :: * -> * -> *) (t :: * -> *) a b.
Bindable source t =>
source a (t b) -> source (t a) (t b)
====<< ((->)
< State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e)
(Exactly
(Maybe
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e))))
< (:>)
(State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e))
Maybe
(Exactly
(Maybe
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e)))
forall (m :: * -> * -> *) (t :: * -> *) (u :: * -> *) a.
(Monadic m t, Pointable u) =>
(m < t a) < (:>) t u a
wrap (((->)
< State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e)
(Exactly
(Maybe
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e))))
< (:>)
(State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e))
Maybe
(Exactly
(Maybe
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e))))
-> (Lens
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe))))))
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e)
e
-> State
((<::>)
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))
e)
(Exactly
(Maybe
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e)))
-> State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e)
(Exactly
(Maybe
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e))))
-> Lens
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe))))))
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e)
e
-> State
((<::>)
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))
e)
(Exactly
(Maybe
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e)))
-> (:>)
(State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e))
Maybe
(Exactly
(Maybe
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e)))
forall (target :: * -> * -> *) (v :: * -> * -> *) a c d b.
(Covariant (->) target (v a), Semigroupoid v) =>
v c d -> target (v a (v b c)) (v a (v b d))
.:.. forall bg ls (u :: * -> *) result.
Lens u bg ls -> State (u ls) result -> State bg result
forall ls (u :: * -> *) result.
Lens u (Zipper Rose e) ls
-> State (u ls) result -> State (Zipper Rose e) result
zoom @(Zipper Rose e) (Lens
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe))))))
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e)
e
-> State
((<::>)
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))
e)
(Exactly
(Maybe
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e)))
-> (:>)
(State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e))
Maybe
(Exactly
(Maybe
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e))))
-> Lens
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe))))))
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e)
e
-> State
((<::>)
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))
e)
(Exactly
(Maybe
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e)))
-> (:>)
(State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e))
Maybe
(Exactly
(Maybe
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e)))
forall (m :: * -> * -> *) a b. Category m => m (m a b) (m a b)
<--- forall k (segment :: k) (structure :: * -> *).
(Substructure segment structure, Covariant (->) (->) structure) =>
structure @>>> Substance segment structure
forall (structure :: * -> *).
(Substructure 'Ancestors structure,
Covariant (->) (->) structure) =>
structure @>>> Substance 'Ancestors structure
sub @Ancestors
(State
((<::>)
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))
e)
(Exactly
(Maybe
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e)))
-> (:>)
(State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e))
Maybe
(Exactly
(Maybe
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e))))
-> State
((<::>)
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))
e)
(Exactly
(Maybe
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e)))
-> (:>)
(State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e))
Maybe
(Exactly
(Maybe
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e)))
forall (m :: * -> * -> *) a b. Category m => m (m a b) (m a b)
<--- Lens
Exactly
((<::>)
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))
e)
(List
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e))
-> State
(Exactly
(List
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e)))
(Exactly
(Maybe
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e)))
-> State
((<::>)
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))
e)
(Exactly
(Maybe
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e)))
forall bg ls (u :: * -> *) result.
Lens u bg ls -> State (u ls) result -> State bg result
zoom (Lens
Exactly
((<::>)
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))
e)
(List
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e))
-> State
(Exactly
(List
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e)))
(Exactly
(Maybe
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e)))
-> State
((<::>)
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))
e)
(Exactly
(Maybe
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e))))
-> Lens
Exactly
((<::>)
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))
e)
(List
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e))
-> State
(Exactly
(List
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e)))
(Exactly
(Maybe
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e)))
-> State
((<::>)
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))
e)
(Exactly
(Maybe
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e)))
forall (m :: * -> * -> *) a b. Category m => m (m a b) (m a b)
<-- Lens
Exactly
((<::>)
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))
e)
(List
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e))
forall (t :: * -> *) a.
Interpreted (->) t =>
(Lens Exactly < t a) < Primary t a
primary (State
(Exactly
(List
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e)))
(Exactly
(Maybe
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e)))
-> State
((<::>)
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))
e)
(Exactly
(Maybe
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e))))
-> State
(Exactly
(List
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e)))
(Exactly
(Maybe
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e)))
-> State
((<::>)
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))
e)
(Exactly
(Maybe
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e)))
forall (m :: * -> * -> *) a b. Category m => m (m a b) (m a b)
<-- State
(List
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e))
(Maybe
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e))
-> State
(Exactly
(List
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e)))
(Exactly
(Maybe
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e)))
forall (t :: * -> *) s result.
(Covariant (->) (->) t, Semimonoidal (<--) (:*:) (:*:) t) =>
State s result -> State (t s) (t result)
overlook (forall e.
Stack (TT Covariant Covariant Maybe (Construction Maybe)) =>
(State < List e)
< Topping (TT Covariant Covariant Maybe (Construction Maybe)) e
forall (structure :: * -> *) e.
Stack structure =>
(State < structure e) < Topping structure e
pop @List) where
merging :: Nonempty Rose e -> Tape (List <::> Nonempty Rose) e -> Nonempty Rose e
merging :: Nonempty Rose e
-> Tape
(TT Covariant Covariant Maybe (Construction Maybe)
<::> Nonempty Rose)
e
-> Nonempty Rose e
merging Nonempty Rose e
x (T_U (Exactly e
p :*: T_U (Reverse (<::>)
(TT Covariant Covariant Maybe (Construction Maybe))
(Nonempty Rose)
e
ls :*: (<::>)
(TT Covariant Covariant Maybe (Construction Maybe))
(Nonempty Rose)
e
rs))) =
e
-> ((TT Covariant Covariant Maybe (Construction Maybe)
:. Construction
(TT Covariant Covariant Maybe (Construction Maybe)))
>>> e)
-> Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e
forall (t :: * -> *) a.
a -> ((t :. Construction t) >>> a) -> Construction t a
Construct e
p (((TT Covariant Covariant Maybe (Construction Maybe)
:. Construction
(TT Covariant Covariant Maybe (Construction Maybe)))
>>> e)
-> Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
-> ((TT Covariant Covariant Maybe (Construction Maybe)
:. Construction
(TT Covariant Covariant Maybe (Construction Maybe)))
>>> e)
-> Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e
forall (m :: * -> * -> *) a b. Category m => m (m a b) (m a b)
<-- TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
e
-> (TT Covariant Covariant Maybe (Construction Maybe)
:. Construction
(TT Covariant Covariant Maybe (Construction Maybe)))
>>> e
forall (m :: * -> * -> *) (t :: * -> *) a.
Interpreted m t =>
(m < t a) < Primary t a
run TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
e
(<::>)
(TT Covariant Covariant Maybe (Construction Maybe))
(Nonempty Rose)
e
ls ((TT Covariant Covariant Maybe (Construction Maybe)
:. Construction
(TT Covariant Covariant Maybe (Construction Maybe)))
>>> e)
-> ((TT Covariant Covariant Maybe (Construction Maybe)
:. Construction
(TT Covariant Covariant Maybe (Construction Maybe)))
>>> e)
-> (TT Covariant Covariant Maybe (Construction Maybe)
:. Construction
(TT Covariant Covariant Maybe (Construction Maybe)))
>>> e
forall a. Semigroup a => a -> a -> a
+ Construction (TT Covariant Covariant Maybe (Construction Maybe)) e
-> (TT Covariant Covariant Maybe (Construction Maybe)
:. Construction
(TT Covariant Covariant Maybe (Construction Maybe)))
>>> e
forall (t :: * -> *) a. Pointable t => a -> t a
point Construction (TT Covariant Covariant Maybe (Construction Maybe)) e
Nonempty Rose e
x ((TT Covariant Covariant Maybe (Construction Maybe)
:. Construction
(TT Covariant Covariant Maybe (Construction Maybe)))
>>> e)
-> ((TT Covariant Covariant Maybe (Construction Maybe)
:. Construction
(TT Covariant Covariant Maybe (Construction Maybe)))
>>> e)
-> (TT Covariant Covariant Maybe (Construction Maybe)
:. Construction
(TT Covariant Covariant Maybe (Construction Maybe)))
>>> e
forall a. Semigroup a => a -> a -> a
+ TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
e
-> (TT Covariant Covariant Maybe (Construction Maybe)
:. Construction
(TT Covariant Covariant Maybe (Construction Maybe)))
>>> e
forall (m :: * -> * -> *) (t :: * -> *) a.
Interpreted m t =>
(m < t a) < Primary t a
run TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
e
(<::>)
(TT Covariant Covariant Maybe (Construction Maybe))
(Nonempty Rose)
e
rs
instance Slidable Left (Exactly <:*:> Roses <:*:> List <::> Tape Roses) where
type Sliding Left (Exactly <:*:> Roses <:*:> List <::> Tape Roses) = Maybe
slide :: forall e . State > Zipper Rose e :> Maybe >>> ()
slide :: ((State > Zipper Rose e) :> Maybe) >>> ()
slide = (:>)
(State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e))
Maybe
()
-> (:>)
(State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e))
Maybe
()
forall (t :: * -> *) a. Covariant (->) (->) t => t a -> t ()
void ((:>)
(State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e))
Maybe
()
-> (:>)
(State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e))
Maybe
())
-> (:>)
(State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e))
Maybe
()
-> (:>)
(State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e))
Maybe
()
forall (m :: * -> * -> *) a b. Category m => m (m a b) (m a b)
<------- Maybe ()
-> (:>)
(State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e))
Maybe
()
forall (cat :: * -> * -> *) (t :: (* -> *) -> * -> *) (u :: * -> *)
a.
(Liftable cat t, Covariant cat cat u) =>
cat (u a) (t u a)
lift (Maybe ()
-> (:>)
(State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e))
Maybe
())
-> (Exactly (Maybe ()) -> Maybe ())
-> Exactly (Maybe ())
-> (:>)
(State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e))
Maybe
()
forall (m :: * -> * -> *) b c a.
Semigroupoid m =>
m b c -> m a b -> m a c
. Exactly (Maybe ()) -> Maybe ()
forall (t :: * -> *) a. Extractable t => t a -> a
extract
(Exactly (Maybe ())
-> (:>)
(State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e))
Maybe
())
-> (:>)
(State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e))
Maybe
(Exactly (Maybe ()))
-> (:>)
(State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e))
Maybe
()
forall (source :: * -> * -> *) (t :: * -> *) a b.
Bindable source t =>
source a (t b) -> source (t a) (t b)
=====<< ((->)
< State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e)
(Exactly (Maybe ())))
< (:>)
(State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e))
Maybe
(Exactly (Maybe ()))
forall (m :: * -> * -> *) (t :: * -> *) (u :: * -> *) a.
(Monadic m t, Pointable u) =>
(m < t a) < (:>) t u a
wrap (((->)
< State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e)
(Exactly (Maybe ())))
< (:>)
(State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e))
Maybe
(Exactly (Maybe ())))
-> (Lens
(TT
Covariant
Covariant
(Tape (TT Covariant Covariant Maybe (Construction Maybe)))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e)
e
-> State
((<::>)
(Tape (TT Covariant Covariant Maybe (Construction Maybe)))
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
e)
(Exactly (Maybe ()))
-> State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e)
(Exactly (Maybe ())))
-> Lens
(TT
Covariant
Covariant
(Tape (TT Covariant Covariant Maybe (Construction Maybe)))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e)
e
-> State
((<::>)
(Tape (TT Covariant Covariant Maybe (Construction Maybe)))
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
e)
(Exactly (Maybe ()))
-> (:>)
(State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e))
Maybe
(Exactly (Maybe ()))
forall (target :: * -> * -> *) (v :: * -> * -> *) a c d b.
(Covariant (->) target (v a), Semigroupoid v) =>
v c d -> target (v a (v b c)) (v a (v b d))
.:.. forall bg ls (u :: * -> *) result.
Lens u bg ls -> State (u ls) result -> State bg result
forall ls (u :: * -> *) result.
Lens u (Zipper Rose e) ls
-> State (u ls) result -> State (Zipper Rose e) result
zoom @(Zipper Rose e)
(Lens
(TT
Covariant
Covariant
(Tape (TT Covariant Covariant Maybe (Construction Maybe)))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e)
e
-> State
((<::>)
(Tape (TT Covariant Covariant Maybe (Construction Maybe)))
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
e)
(Exactly (Maybe ()))
-> (:>)
(State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e))
Maybe
(Exactly (Maybe ())))
-> Lens
(TT
Covariant
Covariant
(Tape (TT Covariant Covariant Maybe (Construction Maybe)))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e)
e
-> State
((<::>)
(Tape (TT Covariant Covariant Maybe (Construction Maybe)))
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
e)
(Exactly (Maybe ()))
-> (:>)
(State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e))
Maybe
(Exactly (Maybe ()))
forall (m :: * -> * -> *) a b. Category m => m (m a b) (m a b)
<----- forall k (segment :: k) (structure :: * -> *).
(Substructure segment structure, Covariant (->) (->) structure) =>
structure @>>> Substance segment structure
forall (structure :: * -> *).
(Substructure ('Focused 'Forest) structure,
Covariant (->) (->) structure) =>
structure @>>> Substance ('Focused 'Forest) structure
sub @(Focused Forest)
(State
((<::>)
(Tape (TT Covariant Covariant Maybe (Construction Maybe)))
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
e)
(Exactly (Maybe ()))
-> (:>)
(State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e))
Maybe
(Exactly (Maybe ())))
-> State
((<::>)
(Tape (TT Covariant Covariant Maybe (Construction Maybe)))
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
e)
(Exactly (Maybe ()))
-> (:>)
(State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e))
Maybe
(Exactly (Maybe ()))
forall (m :: * -> * -> *) a b. Category m => m (m a b) (m a b)
<----- Lens
Exactly
((<::>)
(Tape (TT Covariant Covariant Maybe (Construction Maybe)))
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
e)
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse (TT Covariant Covariant Maybe (Construction Maybe))
<:*:> TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e))
-> State
(Exactly
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse (TT Covariant Covariant Maybe (Construction Maybe))
<:*:> TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)))
(Exactly (Maybe ()))
-> State
((<::>)
(Tape (TT Covariant Covariant Maybe (Construction Maybe)))
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
e)
(Exactly (Maybe ()))
forall bg ls (u :: * -> *) result.
Lens u bg ls -> State (u ls) result -> State bg result
zoom (Lens
Exactly
((<::>)
(Tape (TT Covariant Covariant Maybe (Construction Maybe)))
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
e)
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse (TT Covariant Covariant Maybe (Construction Maybe))
<:*:> TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e))
-> State
(Exactly
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse (TT Covariant Covariant Maybe (Construction Maybe))
<:*:> TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)))
(Exactly (Maybe ()))
-> State
((<::>)
(Tape (TT Covariant Covariant Maybe (Construction Maybe)))
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
e)
(Exactly (Maybe ())))
-> Lens
Exactly
((<::>)
(Tape (TT Covariant Covariant Maybe (Construction Maybe)))
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
e)
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse (TT Covariant Covariant Maybe (Construction Maybe))
<:*:> TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e))
-> State
(Exactly
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse (TT Covariant Covariant Maybe (Construction Maybe))
<:*:> TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)))
(Exactly (Maybe ()))
-> State
((<::>)
(Tape (TT Covariant Covariant Maybe (Construction Maybe)))
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
e)
(Exactly (Maybe ()))
forall (m :: * -> * -> *) a b. Category m => m (m a b) (m a b)
<---- Lens
Exactly
((<::>)
(Tape (TT Covariant Covariant Maybe (Construction Maybe)))
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
e)
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse (TT Covariant Covariant Maybe (Construction Maybe))
<:*:> TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e))
forall (t :: * -> *) a.
Interpreted (->) t =>
(Lens Exactly < t a) < Primary t a
primary (State
(Exactly
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse (TT Covariant Covariant Maybe (Construction Maybe))
<:*:> TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)))
(Exactly (Maybe ()))
-> State
((<::>)
(Tape (TT Covariant Covariant Maybe (Construction Maybe)))
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
e)
(Exactly (Maybe ())))
-> State
(Exactly
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse (TT Covariant Covariant Maybe (Construction Maybe))
<:*:> TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)))
(Exactly (Maybe ()))
-> State
((<::>)
(Tape (TT Covariant Covariant Maybe (Construction Maybe)))
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
e)
(Exactly (Maybe ()))
forall (m :: * -> * -> *) a b. Category m => m (m a b) (m a b)
<---- State
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse (TT Covariant Covariant Maybe (Construction Maybe))
<:*:> TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e))
(Maybe ())
-> State
(Exactly
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse (TT Covariant Covariant Maybe (Construction Maybe))
<:*:> TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)))
(Exactly (Maybe ()))
forall (t :: * -> *) s result.
(Covariant (->) (->) t, Semimonoidal (<--) (:*:) (:*:) t) =>
State s result -> State (t s) (t result)
overlook
(State
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse (TT Covariant Covariant Maybe (Construction Maybe))
<:*:> TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e))
(Maybe ())
-> State
(Exactly
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse (TT Covariant Covariant Maybe (Construction Maybe))
<:*:> TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)))
(Exactly (Maybe ())))
-> State
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse (TT Covariant Covariant Maybe (Construction Maybe))
<:*:> TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e))
(Maybe ())
-> State
(Exactly
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse (TT Covariant Covariant Maybe (Construction Maybe))
<:*:> TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)))
(Exactly (Maybe ()))
forall (m :: * -> * -> *) a b. Category m => m (m a b) (m a b)
<--- ((State
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse (TT Covariant Covariant Maybe (Construction Maybe))
<:*:> TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e))
:> Maybe)
>>> ())
-> State
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse (TT Covariant Covariant Maybe (Construction Maybe))
<:*:> TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e))
(Maybe ())
forall s result.
((State s :> Maybe) >>> result) -> State s (Maybe result)
probably (((State
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse (TT Covariant Covariant Maybe (Construction Maybe))
<:*:> TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e))
:> Maybe)
>>> ())
-> State
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse (TT Covariant Covariant Maybe (Construction Maybe))
<:*:> TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e))
(Maybe ()))
-> ((State
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse (TT Covariant Covariant Maybe (Construction Maybe))
<:*:> TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e))
:> Maybe)
>>> ())
-> State
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse (TT Covariant Covariant Maybe (Construction Maybe))
<:*:> TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e))
(Maybe ())
forall (m :: * -> * -> *) a b. Category m => m (m a b) (m a b)
<-- forall k (d :: k) (s :: * -> *) e.
Slidable d s =>
((State < s e) :> Sliding d s) >>> ()
forall (s :: * -> *) e.
Slidable 'Left s =>
((State < s e) :> Sliding 'Left s) >>> ()
slide @Left
instance Slidable Right (Exactly <:*:> Roses <:*:> List <::> Tape Roses) where
type Sliding Right (Exactly <:*:> Roses <:*:> List <::> Tape Roses) = Maybe
slide :: forall e . State > Zipper Rose e :> Maybe >>> ()
slide :: ((State > Zipper Rose e) :> Maybe) >>> ()
slide = (:>)
(State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e))
Maybe
()
-> (:>)
(State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e))
Maybe
()
forall (t :: * -> *) a. Covariant (->) (->) t => t a -> t ()
void ((:>)
(State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e))
Maybe
()
-> (:>)
(State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e))
Maybe
())
-> (:>)
(State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e))
Maybe
()
-> (:>)
(State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e))
Maybe
()
forall (m :: * -> * -> *) a b. Category m => m (m a b) (m a b)
<------- Maybe ()
-> (:>)
(State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e))
Maybe
()
forall (cat :: * -> * -> *) (t :: (* -> *) -> * -> *) (u :: * -> *)
a.
(Liftable cat t, Covariant cat cat u) =>
cat (u a) (t u a)
lift (Maybe ()
-> (:>)
(State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e))
Maybe
())
-> (Exactly (Maybe ()) -> Maybe ())
-> Exactly (Maybe ())
-> (:>)
(State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e))
Maybe
()
forall (m :: * -> * -> *) b c a.
Semigroupoid m =>
m b c -> m a b -> m a c
. Exactly (Maybe ()) -> Maybe ()
forall (t :: * -> *) a. Extractable t => t a -> a
extract
(Exactly (Maybe ())
-> (:>)
(State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e))
Maybe
())
-> (:>)
(State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e))
Maybe
(Exactly (Maybe ()))
-> (:>)
(State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e))
Maybe
()
forall (source :: * -> * -> *) (t :: * -> *) a b.
Bindable source t =>
source a (t b) -> source (t a) (t b)
=====<< ((->)
< State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e)
(Exactly (Maybe ())))
< (:>)
(State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e))
Maybe
(Exactly (Maybe ()))
forall (m :: * -> * -> *) (t :: * -> *) (u :: * -> *) a.
(Monadic m t, Pointable u) =>
(m < t a) < (:>) t u a
wrap (((->)
< State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e)
(Exactly (Maybe ())))
< (:>)
(State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e))
Maybe
(Exactly (Maybe ())))
-> (Lens
(TT
Covariant
Covariant
(Tape (TT Covariant Covariant Maybe (Construction Maybe)))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e)
e
-> State
((<::>)
(Tape (TT Covariant Covariant Maybe (Construction Maybe)))
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
e)
(Exactly (Maybe ()))
-> State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e)
(Exactly (Maybe ())))
-> Lens
(TT
Covariant
Covariant
(Tape (TT Covariant Covariant Maybe (Construction Maybe)))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e)
e
-> State
((<::>)
(Tape (TT Covariant Covariant Maybe (Construction Maybe)))
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
e)
(Exactly (Maybe ()))
-> (:>)
(State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e))
Maybe
(Exactly (Maybe ()))
forall (target :: * -> * -> *) (v :: * -> * -> *) a c d b.
(Covariant (->) target (v a), Semigroupoid v) =>
v c d -> target (v a (v b c)) (v a (v b d))
.:.. forall bg ls (u :: * -> *) result.
Lens u bg ls -> State (u ls) result -> State bg result
forall ls (u :: * -> *) result.
Lens u (Zipper Rose e) ls
-> State (u ls) result -> State (Zipper Rose e) result
zoom @(Zipper Rose e)
(Lens
(TT
Covariant
Covariant
(Tape (TT Covariant Covariant Maybe (Construction Maybe)))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e)
e
-> State
((<::>)
(Tape (TT Covariant Covariant Maybe (Construction Maybe)))
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
e)
(Exactly (Maybe ()))
-> (:>)
(State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e))
Maybe
(Exactly (Maybe ())))
-> Lens
(TT
Covariant
Covariant
(Tape (TT Covariant Covariant Maybe (Construction Maybe)))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e)
e
-> State
((<::>)
(Tape (TT Covariant Covariant Maybe (Construction Maybe)))
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
e)
(Exactly (Maybe ()))
-> (:>)
(State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e))
Maybe
(Exactly (Maybe ()))
forall (m :: * -> * -> *) a b. Category m => m (m a b) (m a b)
<----- forall k (segment :: k) (structure :: * -> *).
(Substructure segment structure, Covariant (->) (->) structure) =>
structure @>>> Substance segment structure
forall (structure :: * -> *).
(Substructure ('Focused 'Forest) structure,
Covariant (->) (->) structure) =>
structure @>>> Substance ('Focused 'Forest) structure
sub @(Focused Forest)
(State
((<::>)
(Tape (TT Covariant Covariant Maybe (Construction Maybe)))
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
e)
(Exactly (Maybe ()))
-> (:>)
(State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e))
Maybe
(Exactly (Maybe ())))
-> State
((<::>)
(Tape (TT Covariant Covariant Maybe (Construction Maybe)))
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
e)
(Exactly (Maybe ()))
-> (:>)
(State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e))
Maybe
(Exactly (Maybe ()))
forall (m :: * -> * -> *) a b. Category m => m (m a b) (m a b)
<----- Lens
Exactly
((<::>)
(Tape (TT Covariant Covariant Maybe (Construction Maybe)))
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
e)
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse (TT Covariant Covariant Maybe (Construction Maybe))
<:*:> TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e))
-> State
(Exactly
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse (TT Covariant Covariant Maybe (Construction Maybe))
<:*:> TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)))
(Exactly (Maybe ()))
-> State
((<::>)
(Tape (TT Covariant Covariant Maybe (Construction Maybe)))
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
e)
(Exactly (Maybe ()))
forall bg ls (u :: * -> *) result.
Lens u bg ls -> State (u ls) result -> State bg result
zoom (Lens
Exactly
((<::>)
(Tape (TT Covariant Covariant Maybe (Construction Maybe)))
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
e)
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse (TT Covariant Covariant Maybe (Construction Maybe))
<:*:> TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e))
-> State
(Exactly
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse (TT Covariant Covariant Maybe (Construction Maybe))
<:*:> TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)))
(Exactly (Maybe ()))
-> State
((<::>)
(Tape (TT Covariant Covariant Maybe (Construction Maybe)))
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
e)
(Exactly (Maybe ())))
-> Lens
Exactly
((<::>)
(Tape (TT Covariant Covariant Maybe (Construction Maybe)))
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
e)
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse (TT Covariant Covariant Maybe (Construction Maybe))
<:*:> TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e))
-> State
(Exactly
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse (TT Covariant Covariant Maybe (Construction Maybe))
<:*:> TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)))
(Exactly (Maybe ()))
-> State
((<::>)
(Tape (TT Covariant Covariant Maybe (Construction Maybe)))
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
e)
(Exactly (Maybe ()))
forall (m :: * -> * -> *) a b. Category m => m (m a b) (m a b)
<---- Lens
Exactly
((<::>)
(Tape (TT Covariant Covariant Maybe (Construction Maybe)))
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
e)
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse (TT Covariant Covariant Maybe (Construction Maybe))
<:*:> TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e))
forall (t :: * -> *) a.
Interpreted (->) t =>
(Lens Exactly < t a) < Primary t a
primary (State
(Exactly
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse (TT Covariant Covariant Maybe (Construction Maybe))
<:*:> TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)))
(Exactly (Maybe ()))
-> State
((<::>)
(Tape (TT Covariant Covariant Maybe (Construction Maybe)))
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
e)
(Exactly (Maybe ())))
-> State
(Exactly
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse (TT Covariant Covariant Maybe (Construction Maybe))
<:*:> TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)))
(Exactly (Maybe ()))
-> State
((<::>)
(Tape (TT Covariant Covariant Maybe (Construction Maybe)))
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
e)
(Exactly (Maybe ()))
forall (m :: * -> * -> *) a b. Category m => m (m a b) (m a b)
<---- State
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse (TT Covariant Covariant Maybe (Construction Maybe))
<:*:> TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e))
(Maybe ())
-> State
(Exactly
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse (TT Covariant Covariant Maybe (Construction Maybe))
<:*:> TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)))
(Exactly (Maybe ()))
forall (t :: * -> *) s result.
(Covariant (->) (->) t, Semimonoidal (<--) (:*:) (:*:) t) =>
State s result -> State (t s) (t result)
overlook
(State
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse (TT Covariant Covariant Maybe (Construction Maybe))
<:*:> TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e))
(Maybe ())
-> State
(Exactly
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse (TT Covariant Covariant Maybe (Construction Maybe))
<:*:> TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)))
(Exactly (Maybe ())))
-> State
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse (TT Covariant Covariant Maybe (Construction Maybe))
<:*:> TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e))
(Maybe ())
-> State
(Exactly
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse (TT Covariant Covariant Maybe (Construction Maybe))
<:*:> TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)))
(Exactly (Maybe ()))
forall (m :: * -> * -> *) a b. Category m => m (m a b) (m a b)
<--- ((State
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse (TT Covariant Covariant Maybe (Construction Maybe))
<:*:> TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e))
:> Maybe)
>>> ())
-> State
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse (TT Covariant Covariant Maybe (Construction Maybe))
<:*:> TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e))
(Maybe ())
forall s result.
((State s :> Maybe) >>> result) -> State s (Maybe result)
probably (((State
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse (TT Covariant Covariant Maybe (Construction Maybe))
<:*:> TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e))
:> Maybe)
>>> ())
-> State
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse (TT Covariant Covariant Maybe (Construction Maybe))
<:*:> TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e))
(Maybe ()))
-> ((State
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse (TT Covariant Covariant Maybe (Construction Maybe))
<:*:> TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e))
:> Maybe)
>>> ())
-> State
(T_U
Covariant
Covariant
(:*:)
Exactly
(Reverse (TT Covariant Covariant Maybe (Construction Maybe))
<:*:> TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e))
(Maybe ())
forall (m :: * -> * -> *) a b. Category m => m (m a b) (m a b)
<-- forall k (d :: k) (s :: * -> *) e.
Slidable d s =>
((State < s e) :> Sliding d s) >>> ()
forall (s :: * -> *) e.
Slidable 'Right s =>
((State < s e) :> Sliding 'Right s) >>> ()
slide @Right
instance Slidable Down (Exactly <:*:> Roses <:*:> List <::> Tape Roses) where
type Sliding Down (Exactly <:*:> Roses <:*:> List <::> Tape Roses) = Maybe
slide :: forall e . State > Zipper Rose e :> Maybe >>> ()
slide :: ((State > Zipper Rose e) :> Maybe) >>> ()
slide = (:>)
(State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e))
Maybe
(Exactly
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e))
-> (:>)
(State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e))
Maybe
()
forall (t :: * -> *) a. Covariant (->) (->) t => t a -> t ()
void ((:>)
(State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e))
Maybe
(Exactly
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e))
-> (:>)
(State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e))
Maybe
())
-> (Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e
-> (:>)
(State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e))
Maybe
(Exactly
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e)))
-> Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e
-> (:>)
(State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e))
Maybe
()
forall (m :: * -> * -> *) b c a.
Semigroupoid m =>
m b c -> m a b -> m a c
. ((->)
< State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e)
(Exactly
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e)))
< (:>)
(State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e))
Maybe
(Exactly
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e))
forall (m :: * -> * -> *) (t :: * -> *) (u :: * -> *) a.
(Monadic m t, Pointable u) =>
(m < t a) < (:>) t u a
wrap (((->)
< State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e)
(Exactly
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e)))
< (:>)
(State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e))
Maybe
(Exactly
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e)))
-> (Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e
-> State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e)
(Exactly
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e)))
-> Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e
-> (:>)
(State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e))
Maybe
(Exactly
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e))
forall (m :: * -> * -> *) b c a.
Semigroupoid m =>
m b c -> m a b -> m a c
. Lens
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe))))))
(Zipper Rose e)
e
-> State
((<::>)
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))
e)
(Exactly
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e))
-> State
(Zipper Rose e)
(Exactly
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e))
forall bg ls (u :: * -> *) result.
Lens u bg ls -> State (u ls) result -> State bg result
zoom @(Zipper Rose e) (forall k (segment :: k) (structure :: * -> *).
(Substructure segment structure, Covariant (->) (->) structure) =>
structure @>>> Substance segment structure
forall (structure :: * -> *).
(Substructure 'Ancestors structure,
Covariant (->) (->) structure) =>
structure @>>> Substance 'Ancestors structure
sub @Ancestors) (State
((<::>)
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))
e)
(Exactly
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e))
-> State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e)
(Exactly
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e)))
-> (Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e
-> State
((<::>)
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))
e)
(Exactly
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e)))
-> Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e
-> State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e)
(Exactly
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e))
forall (m :: * -> * -> *) b c a.
Semigroupoid m =>
m b c -> m a b -> m a c
. Lens
Exactly
((<::>)
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))
e)
(List
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e))
-> State
(Exactly
(List
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e)))
(Exactly
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e))
-> State
((<::>)
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))
e)
(Exactly
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e))
forall bg ls (u :: * -> *) result.
Lens u bg ls -> State (u ls) result -> State bg result
zoom Lens
Exactly
((<::>)
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))
e)
(List
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e))
forall (t :: * -> *) a.
Interpreted (->) t =>
(Lens Exactly < t a) < Primary t a
primary (State
(Exactly
(List
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e)))
(Exactly
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e))
-> State
((<::>)
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))
e)
(Exactly
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e)))
-> (Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e
-> State
(Exactly
(List
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e)))
(Exactly
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e)))
-> Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e
-> State
((<::>)
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))
e)
(Exactly
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e))
forall (m :: * -> * -> *) b c a.
Semigroupoid m =>
m b c -> m a b -> m a c
. State
(List
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e)
-> State
(Exactly
(List
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e)))
(Exactly
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e))
forall (t :: * -> *) s result.
(Covariant (->) (->) t, Semimonoidal (<--) (:*:) (:*:) t) =>
State s result -> State (t s) (t result)
overlook (State
(List
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e)
-> State
(Exactly
(List
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e)))
(Exactly
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e)))
-> (Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e
-> State
(List
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e))
-> Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e
-> State
(Exactly
(List
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e)))
(Exactly
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e))
forall (m :: * -> * -> *) b c a.
Semigroupoid m =>
m b c -> m a b -> m a c
. forall e.
Stack (TT Covariant Covariant Maybe (Construction Maybe)) =>
e -> (State < List e) < e
forall (structure :: * -> *) e.
Stack structure =>
e -> (State < structure e) < e
push @List (Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e
-> State
(List
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e))
-> (Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e
-> Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e)
-> Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e
-> State
(List
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e)
forall (m :: * -> * -> *) b c a.
Semigroupoid m =>
m b c -> m a b -> m a c
. Construction (TT Covariant Covariant Maybe (Construction Maybe)) e
-> Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e
ancestor
(Construction (TT Covariant Covariant Maybe (Construction Maybe)) e
-> (:>)
(State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e))
Maybe
())
-> (:>)
(State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e))
Maybe
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
-> (:>)
(State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e))
Maybe
()
forall (source :: * -> * -> *) (t :: * -> *) a b.
Bindable source t =>
source a (t b) -> source (t a) (t b)
====<< ((->)
< State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e)
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e))
< (:>)
(State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e))
Maybe
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
forall (m :: * -> * -> *) (t :: * -> *) (u :: * -> *) a.
(Monadic m t, Pointable u) =>
(m < t a) < (:>) t u a
wrap (((->)
< State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e)
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e))
< (:>)
(State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e))
Maybe
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e))
-> (Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e
-> State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e)
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e))
-> Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e
-> (:>)
(State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e))
Maybe
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
forall (m :: * -> * -> *) b c a.
Semigroupoid m =>
m b c -> m a b -> m a c
. Lens
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
(Zipper Rose e)
e
-> State
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
-> State
(Zipper Rose e)
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
forall bg ls (u :: * -> *) result.
Lens u bg ls -> State (u ls) result -> State bg result
zoom @(Zipper Rose e) (forall k (segment :: k) (structure :: * -> *).
(Substructure segment structure, Covariant (->) (->) structure) =>
structure @>>> Substance segment structure
forall (structure :: * -> *).
(Substructure ('Focused 'Tree) structure,
Covariant (->) (->) structure) =>
structure @>>> Substance ('Focused 'Tree) structure
sub @(Focused Tree)) (State
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
-> State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e)
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e))
-> (Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e
-> State
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e))
-> Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e
-> State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e)
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
forall (m :: * -> * -> *) b c a.
Semigroupoid m =>
m b c -> m a b -> m a c
. (Construction (TT Covariant Covariant Maybe (Construction Maybe)) e
-> Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
-> State
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
forall s (t :: * -> *). Stateful s t => (s -> s) -> t s
change ((Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e
-> Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
-> State
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e))
-> (Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e
-> Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e
-> Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
-> Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e
-> State
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
forall (m :: * -> * -> *) b c a.
Semigroupoid m =>
m b c -> m a b -> m a c
. Construction (TT Covariant Covariant Maybe (Construction Maybe)) e
-> Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e
-> Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e
forall (m :: * -> * -> *) a i. Kernel m => m a (m i a)
constant
(Construction (TT Covariant Covariant Maybe (Construction Maybe)) e
-> (:>)
(State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e))
Maybe
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e))
-> (:>)
(State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e))
Maybe
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
-> (:>)
(State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e))
Maybe
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
forall (source :: * -> * -> *) (t :: * -> *) a b.
Bindable source t =>
source a (t b) -> source (t a) (t b)
====<< Maybe
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
-> (:>)
(State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e))
Maybe
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
forall (cat :: * -> * -> *) (t :: (* -> *) -> * -> *) (u :: * -> *)
a.
(Liftable cat t, Covariant cat cat u) =>
cat (u a) (t u a)
lift (Maybe
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
-> (:>)
(State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e))
Maybe
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e))
-> (Exactly
(Maybe
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e))
-> Maybe
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e))
-> Exactly
(Maybe
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e))
-> (:>)
(State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e))
Maybe
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
forall (m :: * -> * -> *) b c a.
Semigroupoid m =>
m b c -> m a b -> m a c
. Exactly
(Maybe
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e))
-> Maybe
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
forall (t :: * -> *) a. Extractable t => t a -> a
extract (Exactly
(Maybe
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e))
-> (:>)
(State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e))
Maybe
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e))
-> (:>)
(State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e))
Maybe
(Exactly
(Maybe
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)))
-> (:>)
(State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e))
Maybe
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
forall (source :: * -> * -> *) (t :: * -> *) a b.
Bindable source t =>
source a (t b) -> source (t a) (t b)
====<< ((->)
< State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e)
(Exactly
(Maybe
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e))))
< (:>)
(State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e))
Maybe
(Exactly
(Maybe
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)))
forall (m :: * -> * -> *) (t :: * -> *) (u :: * -> *) a.
(Monadic m t, Pointable u) =>
(m < t a) < (:>) t u a
wrap (((->)
< State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e)
(Exactly
(Maybe
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e))))
< (:>)
(State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e))
Maybe
(Exactly
(Maybe
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e))))
-> (Lens
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e)
e
-> State
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
(Exactly
(Maybe
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)))
-> State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e)
(Exactly
(Maybe
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e))))
-> Lens
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e)
e
-> State
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
(Exactly
(Maybe
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)))
-> (:>)
(State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e))
Maybe
(Exactly
(Maybe
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)))
forall (target :: * -> * -> *) (v :: * -> * -> *) a c d b.
(Covariant (->) target (v a), Semigroupoid v) =>
v c d -> target (v a (v b c)) (v a (v b d))
.:.. forall bg ls (u :: * -> *) result.
Lens u bg ls -> State (u ls) result -> State bg result
forall ls (u :: * -> *) result.
Lens u (Zipper Rose e) ls
-> State (u ls) result -> State (Zipper Rose e) result
zoom @(Zipper Rose e) (Lens
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e)
e
-> State
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
(Exactly
(Maybe
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)))
-> (:>)
(State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e))
Maybe
(Exactly
(Maybe
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e))))
-> Lens
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e)
e
-> State
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
(Exactly
(Maybe
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)))
-> (:>)
(State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e))
Maybe
(Exactly
(Maybe
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)))
forall (m :: * -> * -> *) a b. Category m => m (m a b) (m a b)
<---- forall k (segment :: k) (structure :: * -> *).
(Substructure segment structure, Covariant (->) (->) structure) =>
structure @>>> Substance segment structure
forall (structure :: * -> *).
(Substructure ('Focused 'Tree) structure,
Covariant (->) (->) structure) =>
structure @>>> Substance ('Focused 'Tree) structure
sub @(Focused Tree)
(State
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
(Exactly
(Maybe
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)))
-> (:>)
(State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e))
Maybe
(Exactly
(Maybe
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e))))
-> State
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
(Exactly
(Maybe
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)))
-> (:>)
(State
((<:*:>)
Exactly
(T_U
Covariant
Covariant
(:*:)
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))))
e))
Maybe
(Exactly
(Maybe
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)))
forall (m :: * -> * -> *) a b. Category m => m (m a b) (m a b)
<---- Lens
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
e
-> State
((<::>)
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
e)
(Exactly
(Maybe
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)))
-> State
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
(Exactly
(Maybe
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)))
forall bg ls (u :: * -> *) result.
Lens u bg ls -> State (u ls) result -> State bg result
zoom (Lens
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
e
-> State
((<::>)
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
e)
(Exactly
(Maybe
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)))
-> State
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
(Exactly
(Maybe
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e))))
-> Lens
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
e
-> State
((<::>)
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
e)
(Exactly
(Maybe
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)))
-> State
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
(Exactly
(Maybe
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)))
forall (m :: * -> * -> *) a b. Category m => m (m a b) (m a b)
<--- forall k (segment :: k) (structure :: * -> *).
(Substructure segment structure, Covariant (->) (->) structure) =>
structure @>>> Substance segment structure
forall (structure :: * -> *).
(Substructure 'Rest structure, Covariant (->) (->) structure) =>
structure @>>> Substance 'Rest structure
sub @Rest (State
((<::>)
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
e)
(Exactly
(Maybe
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)))
-> State
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
(Exactly
(Maybe
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e))))
-> State
((<::>)
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
e)
(Exactly
(Maybe
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)))
-> State
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
(Exactly
(Maybe
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)))
forall (m :: * -> * -> *) a b. Category m => m (m a b) (m a b)
<--- Lens
Exactly
((<::>)
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
e)
(List
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e))
-> State
(Exactly
(List
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)))
(Exactly
(Maybe
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)))
-> State
((<::>)
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
e)
(Exactly
(Maybe
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)))
forall bg ls (u :: * -> *) result.
Lens u bg ls -> State (u ls) result -> State bg result
zoom (Lens
Exactly
((<::>)
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
e)
(List
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e))
-> State
(Exactly
(List
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)))
(Exactly
(Maybe
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)))
-> State
((<::>)
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
e)
(Exactly
(Maybe
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e))))
-> Lens
Exactly
((<::>)
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
e)
(List
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e))
-> State
(Exactly
(List
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)))
(Exactly
(Maybe
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)))
-> State
((<::>)
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
e)
(Exactly
(Maybe
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)))
forall (m :: * -> * -> *) a b. Category m => m (m a b) (m a b)
<-- Lens
Exactly
((<::>)
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
e)
(List
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e))
forall (t :: * -> *) a.
Interpreted (->) t =>
(Lens Exactly < t a) < Primary t a
primary (State
(Exactly
(List
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)))
(Exactly
(Maybe
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)))
-> State
((<::>)
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
e)
(Exactly
(Maybe
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e))))
-> State
(Exactly
(List
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)))
(Exactly
(Maybe
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)))
-> State
((<::>)
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
e)
(Exactly
(Maybe
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)))
forall (m :: * -> * -> *) a b. Category m => m (m a b) (m a b)
<-- State
(List
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e))
(Maybe
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e))
-> State
(Exactly
(List
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)))
(Exactly
(Maybe
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)))
forall (t :: * -> *) s result.
(Covariant (->) (->) t, Semimonoidal (<--) (:*:) (:*:) t) =>
State s result -> State (t s) (t result)
overlook (forall e.
Stack (TT Covariant Covariant Maybe (Construction Maybe)) =>
(State < List e)
< Topping (TT Covariant Covariant Maybe (Construction Maybe)) e
forall (structure :: * -> *) e.
Stack structure =>
(State < structure e) < Topping structure e
pop @List) where
ancestor :: Construction List e -> Tape Roses e
ancestor :: Construction (TT Covariant Covariant Maybe (Construction Maybe)) e
-> Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e
ancestor (Construct e
x List
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
xs) = e -> Exactly e
forall a. a -> Exactly a
Exactly e
x Exactly e
-> T_U
Covariant
Covariant
(:*:)
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e
-> Tape
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e
forall k (t :: k -> *) (a :: k) (u :: k -> *).
t a -> u a -> (t <:*:> u) >>>>>> a
<:*:> (<::>)
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
e
-> Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e
forall k (t :: k -> *) (a :: k). t a -> Reverse t a
Reverse ((<::>)
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
e
-> Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e)
-> (<::>)
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
e
-> Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e
forall (m :: * -> * -> *) a b. Category m => m (m a b) (m a b)
<-- List
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
-> (<::>)
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
e
forall (m :: * -> * -> *) (t :: * -> *) a.
Interpreted m t =>
(m < Primary t a) < t a
unite List
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
forall (t :: * -> *) a. Emptiable t => t a
empty Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e
-> (<::>)
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
e
-> T_U
Covariant
Covariant
(:*:)
(Reverse
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)))))
(TT
Covariant
Covariant
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe))))
e
forall k (t :: k -> *) (a :: k) (u :: k -> *).
t a -> u a -> (t <:*:> u) >>>>>> a
<:*:> List
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
-> (<::>)
(TT Covariant Covariant Maybe (Construction Maybe))
(Construction (TT Covariant Covariant Maybe (Construction Maybe)))
e
forall (m :: * -> * -> *) (t :: * -> *) a.
Interpreted m t =>
(m < Primary t a) < t a
unite List
(Construction
(TT Covariant Covariant Maybe (Construction Maybe)) e)
xs