{-# LANGUAGE UndecidableInstances #-} module Pandora.Paradigm.Controlflow.Effect.Adaptable where import Pandora.Core.Functor (type (~>)) import Pandora.Pattern.Category (identity, (.)) import Pandora.Pattern.Functor.Covariant (Covariant, Covariant_) import Pandora.Pattern.Functor.Pointable (Pointable) import Pandora.Pattern.Functor.Extractable (Extractable) import Pandora.Pattern.Functor.Comonad (Comonad) import Pandora.Pattern.Functor.Monad (Monad) import Pandora.Pattern.Transformer (Liftable (lift), Lowerable (lower), Hoistable (hoist)) import Pandora.Paradigm.Controlflow.Effect.Interpreted (Schematic) import Pandora.Paradigm.Controlflow.Effect.Transformer (Monadic, Comonadic, wrap, bring, (:>), (:<)) class Adaptable t u where {-# MINIMAL adapt #-} adapt :: t ~> u type Lifting t u = (Monadic t, Liftable (Schematic Monad t), Covariant_ u (->) (->)) type Lowering t u = (Comonadic t, Lowerable (Schematic Comonad t), Covariant_ u (->) (->)) type Wrappable t u = (Monadic t, Pointable u (->)) type Bringable t u = (Comonadic t, Extractable u (->)) instance Adaptable t t where adapt :: t a -> t a adapt = t a -> t a forall (m :: * -> * -> *) a. Category m => m a a identity instance Lifting t u => Adaptable u (t :> u) where adapt :: u a -> (:>) t u a adapt = u a -> (:>) t u a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Liftable t, Covariant_ u (->) (->)) => u ~> t u lift instance Wrappable t u => Adaptable t (t :> u) where adapt :: t a -> (:>) t u a adapt = t a -> (:>) t u a forall (t :: * -> *) (u :: * -> *). (Monadic t, Pointable u (->)) => t ~> (t :> u) wrap instance Lowering t u => Adaptable (t :< u) u where adapt :: (:<) t u a -> u a adapt = (:<) t u a -> u a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Lowerable t, Covariant_ u (->) (->)) => t u ~> u lower instance Bringable t u => Adaptable (t :< u) t where adapt :: (:<) t u a -> t a adapt = (:<) t u a -> t a forall (t :: * -> *) (u :: * -> *). (Comonadic t, Extractable u (->)) => (t :< u) ~> t bring instance ( Liftable (Schematic Monad t) , Covariant_ (Schematic Monad u v) (->) (->) , Wrappable u v ) => Adaptable u (t :> u :> v) where adapt :: u a -> (:>) t (u :> v) a adapt = (:>) u v a -> (:>) t (u :> v) a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Liftable t, Covariant_ u (->) (->)) => u ~> t u lift ((:>) u v a -> (:>) t (u :> v) a) -> (u a -> (:>) u v a) -> u a -> (:>) t (u :> v) a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . u a -> (:>) u v a forall (t :: * -> *) (u :: * -> *). (Monadic t, Pointable u (->)) => t ~> (t :> u) wrap instance ( Lifting t (Schematic Monad u v) , Lifting u v ) => Adaptable v (t :> u :> v) where adapt :: v a -> (:>) t (u :> v) a adapt = (:>) u v a -> (:>) t (u :> v) a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Liftable t, Covariant_ u (->) (->)) => u ~> t u lift ((:>) u v a -> (:>) t (u :> v) a) -> (v a -> (:>) u v a) -> v a -> (:>) t (u :> v) a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . v a -> (:>) u v a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Liftable t, Covariant_ u (->) (->)) => u ~> t u lift instance ( Lowering t (Schematic Comonad u v) , Bringable u v ) => Adaptable (t :< u :< v) u where adapt :: (:<) t (u :< v) a -> u a adapt = (:<) u v a -> u a forall (t :: * -> *) (u :: * -> *). (Comonadic t, Extractable u (->)) => (t :< u) ~> t bring ((:<) u v a -> u a) -> ((:<) t (u :< v) a -> (:<) u v a) -> (:<) t (u :< v) a -> u a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (:<) t (u :< v) a -> (:<) u v a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Lowerable t, Covariant_ u (->) (->)) => t u ~> u lower instance ( Lowering t (Schematic Comonad u v) , Lowering u v ) => Adaptable (t :< u :< v) v where adapt :: (:<) t (u :< v) a -> v a adapt = (:<) u v a -> v a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Lowerable t, Covariant_ u (->) (->)) => t u ~> u lower ((:<) u v a -> v a) -> ((:<) t (u :< v) a -> (:<) u v a) -> (:<) t (u :< v) a -> v a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (:<) t (u :< v) a -> (:<) u v a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Lowerable t, Covariant_ u (->) (->)) => t u ~> u lower instance ( Liftable (Schematic Monad t) , Lifting t (Schematic Monad u (v :> w)) , Lifting u (Schematic Monad v w) , Wrappable v w ) => Adaptable v (t :> u :> v :> w) where adapt :: v a -> (:>) t (u :> (v :> w)) a adapt = (:>) u (v :> w) a -> (:>) t (u :> (v :> w)) a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Liftable t, Covariant_ u (->) (->)) => u ~> t u lift ((:>) u (v :> w) a -> (:>) t (u :> (v :> w)) a) -> (v a -> (:>) u (v :> w) a) -> v a -> (:>) t (u :> (v :> w)) a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (:>) v w a -> (:>) u (v :> w) a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Liftable t, Covariant_ u (->) (->)) => u ~> t u lift ((:>) v w a -> (:>) u (v :> w) a) -> (v a -> (:>) v w a) -> v a -> (:>) u (v :> w) a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . v a -> (:>) v w a forall (t :: * -> *) (u :: * -> *). (Monadic t, Pointable u (->)) => t ~> (t :> u) wrap instance ( Lifting t (Schematic Monad u v) , Lifting t (Schematic Monad u (v :> w)) , Lifting u (Schematic Monad v w) , Lifting v w ) => Adaptable w (t :> u :> v :> w) where adapt :: w a -> (:>) t (u :> (v :> w)) a adapt = (:>) u (v :> w) a -> (:>) t (u :> (v :> w)) a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Liftable t, Covariant_ u (->) (->)) => u ~> t u lift ((:>) u (v :> w) a -> (:>) t (u :> (v :> w)) a) -> (w a -> (:>) u (v :> w) a) -> w a -> (:>) t (u :> (v :> w)) a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (:>) v w a -> (:>) u (v :> w) a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Liftable t, Covariant_ u (->) (->)) => u ~> t u lift ((:>) v w a -> (:>) u (v :> w) a) -> (w a -> (:>) v w a) -> w a -> (:>) u (v :> w) a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . w a -> (:>) v w a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Liftable t, Covariant_ u (->) (->)) => u ~> t u lift instance ( Lowering t (Schematic Comonad u (v :< w)) , Lowering u (Schematic Comonad v w) , Bringable v w ) => Adaptable (t :< u :< v :< w) v where adapt :: (:<) t (u :< (v :< w)) a -> v a adapt = (:<) v w a -> v a forall (t :: * -> *) (u :: * -> *). (Comonadic t, Extractable u (->)) => (t :< u) ~> t bring ((:<) v w a -> v a) -> ((:<) t (u :< (v :< w)) a -> (:<) v w a) -> (:<) t (u :< (v :< w)) a -> v a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (:<) u (v :< w) a -> (:<) v w a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Lowerable t, Covariant_ u (->) (->)) => t u ~> u lower ((:<) u (v :< w) a -> (:<) v w a) -> ((:<) t (u :< (v :< w)) a -> (:<) u (v :< w) a) -> (:<) t (u :< (v :< w)) a -> (:<) v w a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (:<) t (u :< (v :< w)) a -> (:<) u (v :< w) a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Lowerable t, Covariant_ u (->) (->)) => t u ~> u lower instance ( Lowering t (Schematic Comonad u v) , Lowering t (Schematic Comonad u (v :< w)) , Lowering u (Schematic Comonad v w) , Lowering v w ) => Adaptable (t :< u :< v :< w) w where adapt :: (:<) t (u :< (v :< w)) a -> w a adapt = (:<) v w a -> w a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Lowerable t, Covariant_ u (->) (->)) => t u ~> u lower ((:<) v w a -> w a) -> ((:<) t (u :< (v :< w)) a -> (:<) v w a) -> (:<) t (u :< (v :< w)) a -> w a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (:<) u (v :< w) a -> (:<) v w a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Lowerable t, Covariant_ u (->) (->)) => t u ~> u lower ((:<) u (v :< w) a -> (:<) v w a) -> ((:<) t (u :< (v :< w)) a -> (:<) u (v :< w) a) -> (:<) t (u :< (v :< w)) a -> (:<) v w a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (:<) t (u :< (v :< w)) a -> (:<) u (v :< w) a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Lowerable t, Covariant_ u (->) (->)) => t u ~> u lower instance ( Lifting t (Schematic Monad u (v :> w :> x)) , Lifting u (Schematic Monad v (w :> x)) , Lifting v (Schematic Monad w x) , Lifting w x ) => Adaptable x (t :> u :> v :> w :> x) where adapt :: x a -> (:>) t (u :> (v :> (w :> x))) a adapt = (:>) u (v :> (w :> x)) a -> (:>) t (u :> (v :> (w :> x))) a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Liftable t, Covariant_ u (->) (->)) => u ~> t u lift ((:>) u (v :> (w :> x)) a -> (:>) t (u :> (v :> (w :> x))) a) -> (x a -> (:>) u (v :> (w :> x)) a) -> x a -> (:>) t (u :> (v :> (w :> x))) a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (:>) v (w :> x) a -> (:>) u (v :> (w :> x)) a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Liftable t, Covariant_ u (->) (->)) => u ~> t u lift ((:>) v (w :> x) a -> (:>) u (v :> (w :> x)) a) -> (x a -> (:>) v (w :> x) a) -> x a -> (:>) u (v :> (w :> x)) a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (:>) w x a -> (:>) v (w :> x) a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Liftable t, Covariant_ u (->) (->)) => u ~> t u lift ((:>) w x a -> (:>) v (w :> x) a) -> (x a -> (:>) w x a) -> x a -> (:>) v (w :> x) a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . x a -> (:>) w x a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Liftable t, Covariant_ u (->) (->)) => u ~> t u lift instance ( Lifting t (Schematic Monad u (v :> w :> x)) , Lifting u (Schematic Monad v (w :> x)) , Lifting v (Schematic Monad w x) , Wrappable w x ) => Adaptable w (t :> u :> v :> w :> x) where adapt :: w a -> (:>) t (u :> (v :> (w :> x))) a adapt = (:>) u (v :> (w :> x)) a -> (:>) t (u :> (v :> (w :> x))) a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Liftable t, Covariant_ u (->) (->)) => u ~> t u lift ((:>) u (v :> (w :> x)) a -> (:>) t (u :> (v :> (w :> x))) a) -> (w a -> (:>) u (v :> (w :> x)) a) -> w a -> (:>) t (u :> (v :> (w :> x))) a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (:>) v (w :> x) a -> (:>) u (v :> (w :> x)) a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Liftable t, Covariant_ u (->) (->)) => u ~> t u lift ((:>) v (w :> x) a -> (:>) u (v :> (w :> x)) a) -> (w a -> (:>) v (w :> x) a) -> w a -> (:>) u (v :> (w :> x)) a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (:>) w x a -> (:>) v (w :> x) a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Liftable t, Covariant_ u (->) (->)) => u ~> t u lift ((:>) w x a -> (:>) v (w :> x) a) -> (w a -> (:>) w x a) -> w a -> (:>) v (w :> x) a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . w a -> (:>) w x a forall (t :: * -> *) (u :: * -> *). (Monadic t, Pointable u (->)) => t ~> (t :> u) wrap instance ( Lowering t (Schematic Comonad u (v :< w :< x)) , Lowering u (Schematic Comonad v (w :< x)) , Lowering v (Schematic Comonad w x) , Lowering w x ) => Adaptable (t :< u :< v :< w :< x) x where adapt :: (:<) t (u :< (v :< (w :< x))) a -> x a adapt = (:<) w x a -> x a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Lowerable t, Covariant_ u (->) (->)) => t u ~> u lower ((:<) w x a -> x a) -> ((:<) t (u :< (v :< (w :< x))) a -> (:<) w x a) -> (:<) t (u :< (v :< (w :< x))) a -> x a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (:<) v (w :< x) a -> (:<) w x a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Lowerable t, Covariant_ u (->) (->)) => t u ~> u lower ((:<) v (w :< x) a -> (:<) w x a) -> ((:<) t (u :< (v :< (w :< x))) a -> (:<) v (w :< x) a) -> (:<) t (u :< (v :< (w :< x))) a -> (:<) w x a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (:<) u (v :< (w :< x)) a -> (:<) v (w :< x) a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Lowerable t, Covariant_ u (->) (->)) => t u ~> u lower ((:<) u (v :< (w :< x)) a -> (:<) v (w :< x) a) -> ((:<) t (u :< (v :< (w :< x))) a -> (:<) u (v :< (w :< x)) a) -> (:<) t (u :< (v :< (w :< x))) a -> (:<) v (w :< x) a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (:<) t (u :< (v :< (w :< x))) a -> (:<) u (v :< (w :< x)) a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Lowerable t, Covariant_ u (->) (->)) => t u ~> u lower instance ( Lowering t (Schematic Comonad u (v :< w :< x)) , Lowering u (Schematic Comonad v (w :< x)) , Lowering v (Schematic Comonad w x) , Bringable w x ) => Adaptable (t :< u :< v :< w :< x) w where adapt :: (:<) t (u :< (v :< (w :< x))) a -> w a adapt = (:<) w x a -> w a forall (t :: * -> *) (u :: * -> *). (Comonadic t, Extractable u (->)) => (t :< u) ~> t bring ((:<) w x a -> w a) -> ((:<) t (u :< (v :< (w :< x))) a -> (:<) w x a) -> (:<) t (u :< (v :< (w :< x))) a -> w a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (:<) v (w :< x) a -> (:<) w x a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Lowerable t, Covariant_ u (->) (->)) => t u ~> u lower ((:<) v (w :< x) a -> (:<) w x a) -> ((:<) t (u :< (v :< (w :< x))) a -> (:<) v (w :< x) a) -> (:<) t (u :< (v :< (w :< x))) a -> (:<) w x a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (:<) u (v :< (w :< x)) a -> (:<) v (w :< x) a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Lowerable t, Covariant_ u (->) (->)) => t u ~> u lower ((:<) u (v :< (w :< x)) a -> (:<) v (w :< x) a) -> ((:<) t (u :< (v :< (w :< x))) a -> (:<) u (v :< (w :< x)) a) -> (:<) t (u :< (v :< (w :< x))) a -> (:<) v (w :< x) a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (:<) t (u :< (v :< (w :< x))) a -> (:<) u (v :< (w :< x)) a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Lowerable t, Covariant_ u (->) (->)) => t u ~> u lower instance ( Lifting t (Schematic Monad u (v :> w :> x :> y)) , Lifting u (Schematic Monad v (w :> x :> y)) , Lifting v (Schematic Monad w (x :> y)) , Lifting w (Schematic Monad x y) , Lifting x y ) => Adaptable y (t :> u :> v :> w :> x :> y) where adapt :: y a -> (:>) t (u :> (v :> (w :> (x :> y)))) a adapt = (:>) u (v :> (w :> (x :> y))) a -> (:>) t (u :> (v :> (w :> (x :> y)))) a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Liftable t, Covariant_ u (->) (->)) => u ~> t u lift ((:>) u (v :> (w :> (x :> y))) a -> (:>) t (u :> (v :> (w :> (x :> y)))) a) -> (y a -> (:>) u (v :> (w :> (x :> y))) a) -> y a -> (:>) t (u :> (v :> (w :> (x :> y)))) a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (:>) v (w :> (x :> y)) a -> (:>) u (v :> (w :> (x :> y))) a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Liftable t, Covariant_ u (->) (->)) => u ~> t u lift ((:>) v (w :> (x :> y)) a -> (:>) u (v :> (w :> (x :> y))) a) -> (y a -> (:>) v (w :> (x :> y)) a) -> y a -> (:>) u (v :> (w :> (x :> y))) a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (:>) w (x :> y) a -> (:>) v (w :> (x :> y)) a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Liftable t, Covariant_ u (->) (->)) => u ~> t u lift ((:>) w (x :> y) a -> (:>) v (w :> (x :> y)) a) -> (y a -> (:>) w (x :> y) a) -> y a -> (:>) v (w :> (x :> y)) a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (:>) x y a -> (:>) w (x :> y) a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Liftable t, Covariant_ u (->) (->)) => u ~> t u lift ((:>) x y a -> (:>) w (x :> y) a) -> (y a -> (:>) x y a) -> y a -> (:>) w (x :> y) a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . y a -> (:>) x y a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Liftable t, Covariant_ u (->) (->)) => u ~> t u lift instance ( Lifting t (Schematic Monad u (v :> w :> x :> y)) , Lifting u (Schematic Monad v (w :> x :> y)) , Lifting v (Schematic Monad w (x :> y)) , Lifting w (Schematic Monad x y) , Wrappable x y ) => Adaptable x (t :> u :> v :> w :> x :> y) where adapt :: x a -> (:>) t (u :> (v :> (w :> (x :> y)))) a adapt = (:>) u (v :> (w :> (x :> y))) a -> (:>) t (u :> (v :> (w :> (x :> y)))) a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Liftable t, Covariant_ u (->) (->)) => u ~> t u lift ((:>) u (v :> (w :> (x :> y))) a -> (:>) t (u :> (v :> (w :> (x :> y)))) a) -> (x a -> (:>) u (v :> (w :> (x :> y))) a) -> x a -> (:>) t (u :> (v :> (w :> (x :> y)))) a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (:>) v (w :> (x :> y)) a -> (:>) u (v :> (w :> (x :> y))) a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Liftable t, Covariant_ u (->) (->)) => u ~> t u lift ((:>) v (w :> (x :> y)) a -> (:>) u (v :> (w :> (x :> y))) a) -> (x a -> (:>) v (w :> (x :> y)) a) -> x a -> (:>) u (v :> (w :> (x :> y))) a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (:>) w (x :> y) a -> (:>) v (w :> (x :> y)) a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Liftable t, Covariant_ u (->) (->)) => u ~> t u lift ((:>) w (x :> y) a -> (:>) v (w :> (x :> y)) a) -> (x a -> (:>) w (x :> y) a) -> x a -> (:>) v (w :> (x :> y)) a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (:>) x y a -> (:>) w (x :> y) a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Liftable t, Covariant_ u (->) (->)) => u ~> t u lift ((:>) x y a -> (:>) w (x :> y) a) -> (x a -> (:>) x y a) -> x a -> (:>) w (x :> y) a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . x a -> (:>) x y a forall (t :: * -> *) (u :: * -> *). (Monadic t, Pointable u (->)) => t ~> (t :> u) wrap instance ( Lowering t (Schematic Comonad u (v :< w :< x :< y)) , Lowering u (Schematic Comonad v (w :< x :< y)) , Lowering v (Schematic Comonad w (x :< y)) , Lowering w (Schematic Comonad x y) , Lowering x y ) => Adaptable (t :< u :< v :< w :< x :< y) y where adapt :: (:<) t (u :< (v :< (w :< (x :< y)))) a -> y a adapt = (:<) x y a -> y a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Lowerable t, Covariant_ u (->) (->)) => t u ~> u lower ((:<) x y a -> y a) -> ((:<) t (u :< (v :< (w :< (x :< y)))) a -> (:<) x y a) -> (:<) t (u :< (v :< (w :< (x :< y)))) a -> y a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (:<) w (x :< y) a -> (:<) x y a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Lowerable t, Covariant_ u (->) (->)) => t u ~> u lower ((:<) w (x :< y) a -> (:<) x y a) -> ((:<) t (u :< (v :< (w :< (x :< y)))) a -> (:<) w (x :< y) a) -> (:<) t (u :< (v :< (w :< (x :< y)))) a -> (:<) x y a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (:<) v (w :< (x :< y)) a -> (:<) w (x :< y) a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Lowerable t, Covariant_ u (->) (->)) => t u ~> u lower ((:<) v (w :< (x :< y)) a -> (:<) w (x :< y) a) -> ((:<) t (u :< (v :< (w :< (x :< y)))) a -> (:<) v (w :< (x :< y)) a) -> (:<) t (u :< (v :< (w :< (x :< y)))) a -> (:<) w (x :< y) a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (:<) u (v :< (w :< (x :< y))) a -> (:<) v (w :< (x :< y)) a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Lowerable t, Covariant_ u (->) (->)) => t u ~> u lower ((:<) u (v :< (w :< (x :< y))) a -> (:<) v (w :< (x :< y)) a) -> ((:<) t (u :< (v :< (w :< (x :< y)))) a -> (:<) u (v :< (w :< (x :< y))) a) -> (:<) t (u :< (v :< (w :< (x :< y)))) a -> (:<) v (w :< (x :< y)) a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (:<) t (u :< (v :< (w :< (x :< y)))) a -> (:<) u (v :< (w :< (x :< y))) a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Lowerable t, Covariant_ u (->) (->)) => t u ~> u lower instance ( Lowering t (Schematic Comonad u (v :< w :< x :< y)) , Lowering u (Schematic Comonad v (w :< x :< y)) , Lowering v (Schematic Comonad w (x :< y)) , Lowering w (Schematic Comonad x y) , Bringable x y ) => Adaptable (t :< u :< v :< w :< x :< y) x where adapt :: (:<) t (u :< (v :< (w :< (x :< y)))) a -> x a adapt = (:<) x y a -> x a forall (t :: * -> *) (u :: * -> *). (Comonadic t, Extractable u (->)) => (t :< u) ~> t bring ((:<) x y a -> x a) -> ((:<) t (u :< (v :< (w :< (x :< y)))) a -> (:<) x y a) -> (:<) t (u :< (v :< (w :< (x :< y)))) a -> x a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (:<) w (x :< y) a -> (:<) x y a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Lowerable t, Covariant_ u (->) (->)) => t u ~> u lower ((:<) w (x :< y) a -> (:<) x y a) -> ((:<) t (u :< (v :< (w :< (x :< y)))) a -> (:<) w (x :< y) a) -> (:<) t (u :< (v :< (w :< (x :< y)))) a -> (:<) x y a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (:<) v (w :< (x :< y)) a -> (:<) w (x :< y) a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Lowerable t, Covariant_ u (->) (->)) => t u ~> u lower ((:<) v (w :< (x :< y)) a -> (:<) w (x :< y) a) -> ((:<) t (u :< (v :< (w :< (x :< y)))) a -> (:<) v (w :< (x :< y)) a) -> (:<) t (u :< (v :< (w :< (x :< y)))) a -> (:<) w (x :< y) a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (:<) u (v :< (w :< (x :< y))) a -> (:<) v (w :< (x :< y)) a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Lowerable t, Covariant_ u (->) (->)) => t u ~> u lower ((:<) u (v :< (w :< (x :< y))) a -> (:<) v (w :< (x :< y)) a) -> ((:<) t (u :< (v :< (w :< (x :< y)))) a -> (:<) u (v :< (w :< (x :< y))) a) -> (:<) t (u :< (v :< (w :< (x :< y)))) a -> (:<) v (w :< (x :< y)) a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (:<) t (u :< (v :< (w :< (x :< y)))) a -> (:<) u (v :< (w :< (x :< y))) a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Lowerable t, Covariant_ u (->) (->)) => t u ~> u lower instance ( Lifting t (Schematic Monad u (v :> w :> x :> y :> z)) , Lifting u (Schematic Monad v (w :> x :> y :> z)) , Lifting v (Schematic Monad w (x :> y :> z)) , Lifting w (Schematic Monad x (y :> z)) , Lifting x (Schematic Monad y z) , Lifting y z ) => Adaptable z (t :> u :> v :> w :> x :> y :> z) where adapt :: z a -> (:>) t (u :> (v :> (w :> (x :> (y :> z))))) a adapt = (:>) u (v :> (w :> (x :> (y :> z)))) a -> (:>) t (u :> (v :> (w :> (x :> (y :> z))))) a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Liftable t, Covariant_ u (->) (->)) => u ~> t u lift ((:>) u (v :> (w :> (x :> (y :> z)))) a -> (:>) t (u :> (v :> (w :> (x :> (y :> z))))) a) -> (z a -> (:>) u (v :> (w :> (x :> (y :> z)))) a) -> z a -> (:>) t (u :> (v :> (w :> (x :> (y :> z))))) a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (:>) v (w :> (x :> (y :> z))) a -> (:>) u (v :> (w :> (x :> (y :> z)))) a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Liftable t, Covariant_ u (->) (->)) => u ~> t u lift ((:>) v (w :> (x :> (y :> z))) a -> (:>) u (v :> (w :> (x :> (y :> z)))) a) -> (z a -> (:>) v (w :> (x :> (y :> z))) a) -> z a -> (:>) u (v :> (w :> (x :> (y :> z)))) a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (:>) w (x :> (y :> z)) a -> (:>) v (w :> (x :> (y :> z))) a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Liftable t, Covariant_ u (->) (->)) => u ~> t u lift ((:>) w (x :> (y :> z)) a -> (:>) v (w :> (x :> (y :> z))) a) -> (z a -> (:>) w (x :> (y :> z)) a) -> z a -> (:>) v (w :> (x :> (y :> z))) a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (:>) x (y :> z) a -> (:>) w (x :> (y :> z)) a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Liftable t, Covariant_ u (->) (->)) => u ~> t u lift ((:>) x (y :> z) a -> (:>) w (x :> (y :> z)) a) -> (z a -> (:>) x (y :> z) a) -> z a -> (:>) w (x :> (y :> z)) a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (:>) y z a -> (:>) x (y :> z) a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Liftable t, Covariant_ u (->) (->)) => u ~> t u lift ((:>) y z a -> (:>) x (y :> z) a) -> (z a -> (:>) y z a) -> z a -> (:>) x (y :> z) a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . z a -> (:>) y z a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Liftable t, Covariant_ u (->) (->)) => u ~> t u lift instance ( Lifting t (Schematic Monad u (v :> w :> x :> y :> z)) , Lifting u (Schematic Monad v (w :> x :> y :> z)) , Lifting v (Schematic Monad w (x :> y :> z)) , Lifting w (Schematic Monad x (y :> z)) , Lifting x (Schematic Monad y z) , Wrappable y z ) => Adaptable y (t :> u :> v :> w :> x :> y :> z) where adapt :: y a -> (:>) t (u :> (v :> (w :> (x :> (y :> z))))) a adapt = (:>) u (v :> (w :> (x :> (y :> z)))) a -> (:>) t (u :> (v :> (w :> (x :> (y :> z))))) a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Liftable t, Covariant_ u (->) (->)) => u ~> t u lift ((:>) u (v :> (w :> (x :> (y :> z)))) a -> (:>) t (u :> (v :> (w :> (x :> (y :> z))))) a) -> (y a -> (:>) u (v :> (w :> (x :> (y :> z)))) a) -> y a -> (:>) t (u :> (v :> (w :> (x :> (y :> z))))) a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (:>) v (w :> (x :> (y :> z))) a -> (:>) u (v :> (w :> (x :> (y :> z)))) a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Liftable t, Covariant_ u (->) (->)) => u ~> t u lift ((:>) v (w :> (x :> (y :> z))) a -> (:>) u (v :> (w :> (x :> (y :> z)))) a) -> (y a -> (:>) v (w :> (x :> (y :> z))) a) -> y a -> (:>) u (v :> (w :> (x :> (y :> z)))) a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (:>) w (x :> (y :> z)) a -> (:>) v (w :> (x :> (y :> z))) a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Liftable t, Covariant_ u (->) (->)) => u ~> t u lift ((:>) w (x :> (y :> z)) a -> (:>) v (w :> (x :> (y :> z))) a) -> (y a -> (:>) w (x :> (y :> z)) a) -> y a -> (:>) v (w :> (x :> (y :> z))) a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (:>) x (y :> z) a -> (:>) w (x :> (y :> z)) a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Liftable t, Covariant_ u (->) (->)) => u ~> t u lift ((:>) x (y :> z) a -> (:>) w (x :> (y :> z)) a) -> (y a -> (:>) x (y :> z) a) -> y a -> (:>) w (x :> (y :> z)) a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (:>) y z a -> (:>) x (y :> z) a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Liftable t, Covariant_ u (->) (->)) => u ~> t u lift ((:>) y z a -> (:>) x (y :> z) a) -> (y a -> (:>) y z a) -> y a -> (:>) x (y :> z) a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . y a -> (:>) y z a forall (t :: * -> *) (u :: * -> *). (Monadic t, Pointable u (->)) => t ~> (t :> u) wrap instance ( Lowering t (Schematic Comonad u (v :< w :< x :< y :< z)) , Lowering u (Schematic Comonad v (w :< x :< y :< z)) , Lowering v (Schematic Comonad w (x :< y :< z)) , Lowering w (Schematic Comonad x (y :< z)) , Lowering x (Schematic Comonad y z) , Lowering y z ) => Adaptable (t :< u :< v :< w :< x :< y :< z) z where adapt :: (:<) t (u :< (v :< (w :< (x :< (y :< z))))) a -> z a adapt = (:<) y z a -> z a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Lowerable t, Covariant_ u (->) (->)) => t u ~> u lower ((:<) y z a -> z a) -> ((:<) t (u :< (v :< (w :< (x :< (y :< z))))) a -> (:<) y z a) -> (:<) t (u :< (v :< (w :< (x :< (y :< z))))) a -> z a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (:<) x (y :< z) a -> (:<) y z a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Lowerable t, Covariant_ u (->) (->)) => t u ~> u lower ((:<) x (y :< z) a -> (:<) y z a) -> ((:<) t (u :< (v :< (w :< (x :< (y :< z))))) a -> (:<) x (y :< z) a) -> (:<) t (u :< (v :< (w :< (x :< (y :< z))))) a -> (:<) y z a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (:<) w (x :< (y :< z)) a -> (:<) x (y :< z) a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Lowerable t, Covariant_ u (->) (->)) => t u ~> u lower ((:<) w (x :< (y :< z)) a -> (:<) x (y :< z) a) -> ((:<) t (u :< (v :< (w :< (x :< (y :< z))))) a -> (:<) w (x :< (y :< z)) a) -> (:<) t (u :< (v :< (w :< (x :< (y :< z))))) a -> (:<) x (y :< z) a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (:<) v (w :< (x :< (y :< z))) a -> (:<) w (x :< (y :< z)) a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Lowerable t, Covariant_ u (->) (->)) => t u ~> u lower ((:<) v (w :< (x :< (y :< z))) a -> (:<) w (x :< (y :< z)) a) -> ((:<) t (u :< (v :< (w :< (x :< (y :< z))))) a -> (:<) v (w :< (x :< (y :< z))) a) -> (:<) t (u :< (v :< (w :< (x :< (y :< z))))) a -> (:<) w (x :< (y :< z)) a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (:<) u (v :< (w :< (x :< (y :< z)))) a -> (:<) v (w :< (x :< (y :< z))) a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Lowerable t, Covariant_ u (->) (->)) => t u ~> u lower ((:<) u (v :< (w :< (x :< (y :< z)))) a -> (:<) v (w :< (x :< (y :< z))) a) -> ((:<) t (u :< (v :< (w :< (x :< (y :< z))))) a -> (:<) u (v :< (w :< (x :< (y :< z)))) a) -> (:<) t (u :< (v :< (w :< (x :< (y :< z))))) a -> (:<) v (w :< (x :< (y :< z))) a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (:<) t (u :< (v :< (w :< (x :< (y :< z))))) a -> (:<) u (v :< (w :< (x :< (y :< z)))) a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Lowerable t, Covariant_ u (->) (->)) => t u ~> u lower instance ( Lowering t (Schematic Comonad u (v :< w :< x :< y :< z)) , Lowering u (Schematic Comonad v (w :< x :< y :< z)) , Lowering v (Schematic Comonad w (x :< y :< z)) , Lowering w (Schematic Comonad x (y :< z)) , Lowering x (Schematic Comonad y z) , Bringable y z ) => Adaptable (t :< u :< v :< w :< x :< y :< z) y where adapt :: (:<) t (u :< (v :< (w :< (x :< (y :< z))))) a -> y a adapt = (:<) y z a -> y a forall (t :: * -> *) (u :: * -> *). (Comonadic t, Extractable u (->)) => (t :< u) ~> t bring ((:<) y z a -> y a) -> ((:<) t (u :< (v :< (w :< (x :< (y :< z))))) a -> (:<) y z a) -> (:<) t (u :< (v :< (w :< (x :< (y :< z))))) a -> y a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (:<) x (y :< z) a -> (:<) y z a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Lowerable t, Covariant_ u (->) (->)) => t u ~> u lower ((:<) x (y :< z) a -> (:<) y z a) -> ((:<) t (u :< (v :< (w :< (x :< (y :< z))))) a -> (:<) x (y :< z) a) -> (:<) t (u :< (v :< (w :< (x :< (y :< z))))) a -> (:<) y z a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (:<) w (x :< (y :< z)) a -> (:<) x (y :< z) a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Lowerable t, Covariant_ u (->) (->)) => t u ~> u lower ((:<) w (x :< (y :< z)) a -> (:<) x (y :< z) a) -> ((:<) t (u :< (v :< (w :< (x :< (y :< z))))) a -> (:<) w (x :< (y :< z)) a) -> (:<) t (u :< (v :< (w :< (x :< (y :< z))))) a -> (:<) x (y :< z) a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (:<) v (w :< (x :< (y :< z))) a -> (:<) w (x :< (y :< z)) a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Lowerable t, Covariant_ u (->) (->)) => t u ~> u lower ((:<) v (w :< (x :< (y :< z))) a -> (:<) w (x :< (y :< z)) a) -> ((:<) t (u :< (v :< (w :< (x :< (y :< z))))) a -> (:<) v (w :< (x :< (y :< z))) a) -> (:<) t (u :< (v :< (w :< (x :< (y :< z))))) a -> (:<) w (x :< (y :< z)) a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (:<) u (v :< (w :< (x :< (y :< z)))) a -> (:<) v (w :< (x :< (y :< z))) a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Lowerable t, Covariant_ u (->) (->)) => t u ~> u lower ((:<) u (v :< (w :< (x :< (y :< z)))) a -> (:<) v (w :< (x :< (y :< z))) a) -> ((:<) t (u :< (v :< (w :< (x :< (y :< z))))) a -> (:<) u (v :< (w :< (x :< (y :< z)))) a) -> (:<) t (u :< (v :< (w :< (x :< (y :< z))))) a -> (:<) v (w :< (x :< (y :< z))) a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (:<) t (u :< (v :< (w :< (x :< (y :< z))))) a -> (:<) u (v :< (w :< (x :< (y :< z)))) a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Lowerable t, Covariant_ u (->) (->)) => t u ~> u lower instance ( Lifting t (Schematic Monad u (v :> w :> x :> y :> z :> f)) , Lifting u (Schematic Monad v (w :> x :> y :> z :> f)) , Lifting v (Schematic Monad w (x :> y :> z :> f)) , Lifting w (Schematic Monad x (y :> z :> f)) , Lifting x (Schematic Monad y (z :> f)) , Lifting y (Schematic Monad z f) , Lifting z f ) => Adaptable f (t :> u :> v :> w :> x :> y :> z :> f) where adapt :: f a -> (:>) t (u :> (v :> (w :> (x :> (y :> (z :> f)))))) a adapt = (:>) u (v :> (w :> (x :> (y :> (z :> f))))) a -> (:>) t (u :> (v :> (w :> (x :> (y :> (z :> f)))))) a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Liftable t, Covariant_ u (->) (->)) => u ~> t u lift ((:>) u (v :> (w :> (x :> (y :> (z :> f))))) a -> (:>) t (u :> (v :> (w :> (x :> (y :> (z :> f)))))) a) -> (f a -> (:>) u (v :> (w :> (x :> (y :> (z :> f))))) a) -> f a -> (:>) t (u :> (v :> (w :> (x :> (y :> (z :> f)))))) a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (:>) v (w :> (x :> (y :> (z :> f)))) a -> (:>) u (v :> (w :> (x :> (y :> (z :> f))))) a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Liftable t, Covariant_ u (->) (->)) => u ~> t u lift ((:>) v (w :> (x :> (y :> (z :> f)))) a -> (:>) u (v :> (w :> (x :> (y :> (z :> f))))) a) -> (f a -> (:>) v (w :> (x :> (y :> (z :> f)))) a) -> f a -> (:>) u (v :> (w :> (x :> (y :> (z :> f))))) a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (:>) w (x :> (y :> (z :> f))) a -> (:>) v (w :> (x :> (y :> (z :> f)))) a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Liftable t, Covariant_ u (->) (->)) => u ~> t u lift ((:>) w (x :> (y :> (z :> f))) a -> (:>) v (w :> (x :> (y :> (z :> f)))) a) -> (f a -> (:>) w (x :> (y :> (z :> f))) a) -> f a -> (:>) v (w :> (x :> (y :> (z :> f)))) a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (:>) x (y :> (z :> f)) a -> (:>) w (x :> (y :> (z :> f))) a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Liftable t, Covariant_ u (->) (->)) => u ~> t u lift ((:>) x (y :> (z :> f)) a -> (:>) w (x :> (y :> (z :> f))) a) -> (f a -> (:>) x (y :> (z :> f)) a) -> f a -> (:>) w (x :> (y :> (z :> f))) a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (:>) y (z :> f) a -> (:>) x (y :> (z :> f)) a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Liftable t, Covariant_ u (->) (->)) => u ~> t u lift ((:>) y (z :> f) a -> (:>) x (y :> (z :> f)) a) -> (f a -> (:>) y (z :> f) a) -> f a -> (:>) x (y :> (z :> f)) a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (:>) z f a -> (:>) y (z :> f) a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Liftable t, Covariant_ u (->) (->)) => u ~> t u lift ((:>) z f a -> (:>) y (z :> f) a) -> (f a -> (:>) z f a) -> f a -> (:>) y (z :> f) a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . f a -> (:>) z f a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Liftable t, Covariant_ u (->) (->)) => u ~> t u lift instance ( Lifting t (Schematic Monad u (v :> w :> x :> y :> z :> f)) , Lifting u (Schematic Monad v (w :> x :> y :> z :> f)) , Lifting v (Schematic Monad w (x :> y :> z :> f)) , Lifting w (Schematic Monad x (y :> z :> f)) , Lifting x (Schematic Monad y (z :> f)) , Lifting y (Schematic Monad z f) , Wrappable z f ) => Adaptable z (t :> u :> v :> w :> x :> y :> z :> f) where adapt :: z a -> (:>) t (u :> (v :> (w :> (x :> (y :> (z :> f)))))) a adapt = (:>) u (v :> (w :> (x :> (y :> (z :> f))))) a -> (:>) t (u :> (v :> (w :> (x :> (y :> (z :> f)))))) a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Liftable t, Covariant_ u (->) (->)) => u ~> t u lift ((:>) u (v :> (w :> (x :> (y :> (z :> f))))) a -> (:>) t (u :> (v :> (w :> (x :> (y :> (z :> f)))))) a) -> (z a -> (:>) u (v :> (w :> (x :> (y :> (z :> f))))) a) -> z a -> (:>) t (u :> (v :> (w :> (x :> (y :> (z :> f)))))) a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (:>) v (w :> (x :> (y :> (z :> f)))) a -> (:>) u (v :> (w :> (x :> (y :> (z :> f))))) a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Liftable t, Covariant_ u (->) (->)) => u ~> t u lift ((:>) v (w :> (x :> (y :> (z :> f)))) a -> (:>) u (v :> (w :> (x :> (y :> (z :> f))))) a) -> (z a -> (:>) v (w :> (x :> (y :> (z :> f)))) a) -> z a -> (:>) u (v :> (w :> (x :> (y :> (z :> f))))) a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (:>) w (x :> (y :> (z :> f))) a -> (:>) v (w :> (x :> (y :> (z :> f)))) a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Liftable t, Covariant_ u (->) (->)) => u ~> t u lift ((:>) w (x :> (y :> (z :> f))) a -> (:>) v (w :> (x :> (y :> (z :> f)))) a) -> (z a -> (:>) w (x :> (y :> (z :> f))) a) -> z a -> (:>) v (w :> (x :> (y :> (z :> f)))) a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (:>) x (y :> (z :> f)) a -> (:>) w (x :> (y :> (z :> f))) a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Liftable t, Covariant_ u (->) (->)) => u ~> t u lift ((:>) x (y :> (z :> f)) a -> (:>) w (x :> (y :> (z :> f))) a) -> (z a -> (:>) x (y :> (z :> f)) a) -> z a -> (:>) w (x :> (y :> (z :> f))) a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (:>) y (z :> f) a -> (:>) x (y :> (z :> f)) a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Liftable t, Covariant_ u (->) (->)) => u ~> t u lift ((:>) y (z :> f) a -> (:>) x (y :> (z :> f)) a) -> (z a -> (:>) y (z :> f) a) -> z a -> (:>) x (y :> (z :> f)) a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (:>) z f a -> (:>) y (z :> f) a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Liftable t, Covariant_ u (->) (->)) => u ~> t u lift ((:>) z f a -> (:>) y (z :> f) a) -> (z a -> (:>) z f a) -> z a -> (:>) y (z :> f) a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . z a -> (:>) z f a forall (t :: * -> *) (u :: * -> *). (Monadic t, Pointable u (->)) => t ~> (t :> u) wrap instance ( Lowering t (Schematic Comonad u (v :< w :< x :< y :< z :< f)) , Lowering u (Schematic Comonad v (w :< x :< y :< z :< f)) , Lowering v (Schematic Comonad w (x :< y :< z :< f)) , Lowering w (Schematic Comonad x (y :< z :< f)) , Lowering x (Schematic Comonad y (z :< f)) , Lowering y (Schematic Comonad z f) , Lowering z f ) => Adaptable (t :< u :< v :< w :< x :< y :< z :< f) f where adapt :: (:<) t (u :< (v :< (w :< (x :< (y :< (z :< f)))))) a -> f a adapt = (:<) z f a -> f a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Lowerable t, Covariant_ u (->) (->)) => t u ~> u lower ((:<) z f a -> f a) -> ((:<) t (u :< (v :< (w :< (x :< (y :< (z :< f)))))) a -> (:<) z f a) -> (:<) t (u :< (v :< (w :< (x :< (y :< (z :< f)))))) a -> f a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (:<) y (z :< f) a -> (:<) z f a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Lowerable t, Covariant_ u (->) (->)) => t u ~> u lower ((:<) y (z :< f) a -> (:<) z f a) -> ((:<) t (u :< (v :< (w :< (x :< (y :< (z :< f)))))) a -> (:<) y (z :< f) a) -> (:<) t (u :< (v :< (w :< (x :< (y :< (z :< f)))))) a -> (:<) z f a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (:<) x (y :< (z :< f)) a -> (:<) y (z :< f) a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Lowerable t, Covariant_ u (->) (->)) => t u ~> u lower ((:<) x (y :< (z :< f)) a -> (:<) y (z :< f) a) -> ((:<) t (u :< (v :< (w :< (x :< (y :< (z :< f)))))) a -> (:<) x (y :< (z :< f)) a) -> (:<) t (u :< (v :< (w :< (x :< (y :< (z :< f)))))) a -> (:<) y (z :< f) a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (:<) w (x :< (y :< (z :< f))) a -> (:<) x (y :< (z :< f)) a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Lowerable t, Covariant_ u (->) (->)) => t u ~> u lower ((:<) w (x :< (y :< (z :< f))) a -> (:<) x (y :< (z :< f)) a) -> ((:<) t (u :< (v :< (w :< (x :< (y :< (z :< f)))))) a -> (:<) w (x :< (y :< (z :< f))) a) -> (:<) t (u :< (v :< (w :< (x :< (y :< (z :< f)))))) a -> (:<) x (y :< (z :< f)) a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (:<) v (w :< (x :< (y :< (z :< f)))) a -> (:<) w (x :< (y :< (z :< f))) a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Lowerable t, Covariant_ u (->) (->)) => t u ~> u lower ((:<) v (w :< (x :< (y :< (z :< f)))) a -> (:<) w (x :< (y :< (z :< f))) a) -> ((:<) t (u :< (v :< (w :< (x :< (y :< (z :< f)))))) a -> (:<) v (w :< (x :< (y :< (z :< f)))) a) -> (:<) t (u :< (v :< (w :< (x :< (y :< (z :< f)))))) a -> (:<) w (x :< (y :< (z :< f))) a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (:<) u (v :< (w :< (x :< (y :< (z :< f))))) a -> (:<) v (w :< (x :< (y :< (z :< f)))) a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Lowerable t, Covariant_ u (->) (->)) => t u ~> u lower ((:<) u (v :< (w :< (x :< (y :< (z :< f))))) a -> (:<) v (w :< (x :< (y :< (z :< f)))) a) -> ((:<) t (u :< (v :< (w :< (x :< (y :< (z :< f)))))) a -> (:<) u (v :< (w :< (x :< (y :< (z :< f))))) a) -> (:<) t (u :< (v :< (w :< (x :< (y :< (z :< f)))))) a -> (:<) v (w :< (x :< (y :< (z :< f)))) a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (:<) t (u :< (v :< (w :< (x :< (y :< (z :< f)))))) a -> (:<) u (v :< (w :< (x :< (y :< (z :< f))))) a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Lowerable t, Covariant_ u (->) (->)) => t u ~> u lower instance ( Lowering t (Schematic Comonad u (v :< w :< x :< y :< z :< f)) , Lowering u (Schematic Comonad v (w :< x :< y :< z :< f)) , Lowering v (Schematic Comonad w (x :< y :< z :< f)) , Lowering w (Schematic Comonad x (y :< z :< f)) , Lowering x (Schematic Comonad y (z :< f)) , Lowering y (Schematic Comonad z f) , Bringable z f ) => Adaptable (t :< u :< v :< w :< x :< y :< z :< f) z where adapt :: (:<) t (u :< (v :< (w :< (x :< (y :< (z :< f)))))) a -> z a adapt = (:<) z f a -> z a forall (t :: * -> *) (u :: * -> *). (Comonadic t, Extractable u (->)) => (t :< u) ~> t bring ((:<) z f a -> z a) -> ((:<) t (u :< (v :< (w :< (x :< (y :< (z :< f)))))) a -> (:<) z f a) -> (:<) t (u :< (v :< (w :< (x :< (y :< (z :< f)))))) a -> z a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (:<) y (z :< f) a -> (:<) z f a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Lowerable t, Covariant_ u (->) (->)) => t u ~> u lower ((:<) y (z :< f) a -> (:<) z f a) -> ((:<) t (u :< (v :< (w :< (x :< (y :< (z :< f)))))) a -> (:<) y (z :< f) a) -> (:<) t (u :< (v :< (w :< (x :< (y :< (z :< f)))))) a -> (:<) z f a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (:<) x (y :< (z :< f)) a -> (:<) y (z :< f) a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Lowerable t, Covariant_ u (->) (->)) => t u ~> u lower ((:<) x (y :< (z :< f)) a -> (:<) y (z :< f) a) -> ((:<) t (u :< (v :< (w :< (x :< (y :< (z :< f)))))) a -> (:<) x (y :< (z :< f)) a) -> (:<) t (u :< (v :< (w :< (x :< (y :< (z :< f)))))) a -> (:<) y (z :< f) a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (:<) w (x :< (y :< (z :< f))) a -> (:<) x (y :< (z :< f)) a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Lowerable t, Covariant_ u (->) (->)) => t u ~> u lower ((:<) w (x :< (y :< (z :< f))) a -> (:<) x (y :< (z :< f)) a) -> ((:<) t (u :< (v :< (w :< (x :< (y :< (z :< f)))))) a -> (:<) w (x :< (y :< (z :< f))) a) -> (:<) t (u :< (v :< (w :< (x :< (y :< (z :< f)))))) a -> (:<) x (y :< (z :< f)) a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (:<) v (w :< (x :< (y :< (z :< f)))) a -> (:<) w (x :< (y :< (z :< f))) a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Lowerable t, Covariant_ u (->) (->)) => t u ~> u lower ((:<) v (w :< (x :< (y :< (z :< f)))) a -> (:<) w (x :< (y :< (z :< f))) a) -> ((:<) t (u :< (v :< (w :< (x :< (y :< (z :< f)))))) a -> (:<) v (w :< (x :< (y :< (z :< f)))) a) -> (:<) t (u :< (v :< (w :< (x :< (y :< (z :< f)))))) a -> (:<) w (x :< (y :< (z :< f))) a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (:<) u (v :< (w :< (x :< (y :< (z :< f))))) a -> (:<) v (w :< (x :< (y :< (z :< f)))) a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Lowerable t, Covariant_ u (->) (->)) => t u ~> u lower ((:<) u (v :< (w :< (x :< (y :< (z :< f))))) a -> (:<) v (w :< (x :< (y :< (z :< f)))) a) -> ((:<) t (u :< (v :< (w :< (x :< (y :< (z :< f)))))) a -> (:<) u (v :< (w :< (x :< (y :< (z :< f))))) a) -> (:<) t (u :< (v :< (w :< (x :< (y :< (z :< f)))))) a -> (:<) v (w :< (x :< (y :< (z :< f)))) a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (:<) t (u :< (v :< (w :< (x :< (y :< (z :< f)))))) a -> (:<) u (v :< (w :< (x :< (y :< (z :< f))))) a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Lowerable t, Covariant_ u (->) (->)) => t u ~> u lower instance ( Lifting t (Schematic Monad u (v :> w :> x :> y :> z :> f :> h)) , Lifting u (Schematic Monad v (w :> x :> y :> z :> f :> h)) , Lifting v (Schematic Monad w (x :> y :> z :> f :> h)) , Lifting w (Schematic Monad x (y :> z :> f :> h)) , Lifting x (Schematic Monad y (z :> f :> h)) , Lifting y (Schematic Monad z (f :> h)) , Lifting z (Schematic Monad f h) , Lifting f h ) => Adaptable h (t :> u :> v :> w :> x :> y :> z :> f :> h) where adapt :: h a -> (:>) t (u :> (v :> (w :> (x :> (y :> (z :> (f :> h))))))) a adapt = (:>) u (v :> (w :> (x :> (y :> (z :> (f :> h)))))) a -> (:>) t (u :> (v :> (w :> (x :> (y :> (z :> (f :> h))))))) a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Liftable t, Covariant_ u (->) (->)) => u ~> t u lift ((:>) u (v :> (w :> (x :> (y :> (z :> (f :> h)))))) a -> (:>) t (u :> (v :> (w :> (x :> (y :> (z :> (f :> h))))))) a) -> (h a -> (:>) u (v :> (w :> (x :> (y :> (z :> (f :> h)))))) a) -> h a -> (:>) t (u :> (v :> (w :> (x :> (y :> (z :> (f :> h))))))) a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (:>) v (w :> (x :> (y :> (z :> (f :> h))))) a -> (:>) u (v :> (w :> (x :> (y :> (z :> (f :> h)))))) a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Liftable t, Covariant_ u (->) (->)) => u ~> t u lift ((:>) v (w :> (x :> (y :> (z :> (f :> h))))) a -> (:>) u (v :> (w :> (x :> (y :> (z :> (f :> h)))))) a) -> (h a -> (:>) v (w :> (x :> (y :> (z :> (f :> h))))) a) -> h a -> (:>) u (v :> (w :> (x :> (y :> (z :> (f :> h)))))) a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (:>) w (x :> (y :> (z :> (f :> h)))) a -> (:>) v (w :> (x :> (y :> (z :> (f :> h))))) a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Liftable t, Covariant_ u (->) (->)) => u ~> t u lift ((:>) w (x :> (y :> (z :> (f :> h)))) a -> (:>) v (w :> (x :> (y :> (z :> (f :> h))))) a) -> (h a -> (:>) w (x :> (y :> (z :> (f :> h)))) a) -> h a -> (:>) v (w :> (x :> (y :> (z :> (f :> h))))) a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (:>) x (y :> (z :> (f :> h))) a -> (:>) w (x :> (y :> (z :> (f :> h)))) a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Liftable t, Covariant_ u (->) (->)) => u ~> t u lift ((:>) x (y :> (z :> (f :> h))) a -> (:>) w (x :> (y :> (z :> (f :> h)))) a) -> (h a -> (:>) x (y :> (z :> (f :> h))) a) -> h a -> (:>) w (x :> (y :> (z :> (f :> h)))) a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (:>) y (z :> (f :> h)) a -> (:>) x (y :> (z :> (f :> h))) a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Liftable t, Covariant_ u (->) (->)) => u ~> t u lift ((:>) y (z :> (f :> h)) a -> (:>) x (y :> (z :> (f :> h))) a) -> (h a -> (:>) y (z :> (f :> h)) a) -> h a -> (:>) x (y :> (z :> (f :> h))) a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (:>) z (f :> h) a -> (:>) y (z :> (f :> h)) a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Liftable t, Covariant_ u (->) (->)) => u ~> t u lift ((:>) z (f :> h) a -> (:>) y (z :> (f :> h)) a) -> (h a -> (:>) z (f :> h) a) -> h a -> (:>) y (z :> (f :> h)) a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (:>) f h a -> (:>) z (f :> h) a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Liftable t, Covariant_ u (->) (->)) => u ~> t u lift ((:>) f h a -> (:>) z (f :> h) a) -> (h a -> (:>) f h a) -> h a -> (:>) z (f :> h) a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . h a -> (:>) f h a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Liftable t, Covariant_ u (->) (->)) => u ~> t u lift instance ( Lifting t (Schematic Monad u (v :> w :> x :> y :> z :> f :> h)) , Lifting u (Schematic Monad v (w :> x :> y :> z :> f :> h)) , Lifting v (Schematic Monad w (x :> y :> z :> f :> h)) , Lifting w (Schematic Monad x (y :> z :> f :> h)) , Lifting x (Schematic Monad y (z :> f :> h)) , Lifting y (Schematic Monad z (f :> h)) , Lifting z (Schematic Monad f h) , Wrappable f h ) => Adaptable f (t :> u :> v :> w :> x :> y :> z :> f :> h) where adapt :: f a -> (:>) t (u :> (v :> (w :> (x :> (y :> (z :> (f :> h))))))) a adapt = (:>) u (v :> (w :> (x :> (y :> (z :> (f :> h)))))) a -> (:>) t (u :> (v :> (w :> (x :> (y :> (z :> (f :> h))))))) a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Liftable t, Covariant_ u (->) (->)) => u ~> t u lift ((:>) u (v :> (w :> (x :> (y :> (z :> (f :> h)))))) a -> (:>) t (u :> (v :> (w :> (x :> (y :> (z :> (f :> h))))))) a) -> (f a -> (:>) u (v :> (w :> (x :> (y :> (z :> (f :> h)))))) a) -> f a -> (:>) t (u :> (v :> (w :> (x :> (y :> (z :> (f :> h))))))) a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (:>) v (w :> (x :> (y :> (z :> (f :> h))))) a -> (:>) u (v :> (w :> (x :> (y :> (z :> (f :> h)))))) a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Liftable t, Covariant_ u (->) (->)) => u ~> t u lift ((:>) v (w :> (x :> (y :> (z :> (f :> h))))) a -> (:>) u (v :> (w :> (x :> (y :> (z :> (f :> h)))))) a) -> (f a -> (:>) v (w :> (x :> (y :> (z :> (f :> h))))) a) -> f a -> (:>) u (v :> (w :> (x :> (y :> (z :> (f :> h)))))) a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (:>) w (x :> (y :> (z :> (f :> h)))) a -> (:>) v (w :> (x :> (y :> (z :> (f :> h))))) a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Liftable t, Covariant_ u (->) (->)) => u ~> t u lift ((:>) w (x :> (y :> (z :> (f :> h)))) a -> (:>) v (w :> (x :> (y :> (z :> (f :> h))))) a) -> (f a -> (:>) w (x :> (y :> (z :> (f :> h)))) a) -> f a -> (:>) v (w :> (x :> (y :> (z :> (f :> h))))) a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (:>) x (y :> (z :> (f :> h))) a -> (:>) w (x :> (y :> (z :> (f :> h)))) a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Liftable t, Covariant_ u (->) (->)) => u ~> t u lift ((:>) x (y :> (z :> (f :> h))) a -> (:>) w (x :> (y :> (z :> (f :> h)))) a) -> (f a -> (:>) x (y :> (z :> (f :> h))) a) -> f a -> (:>) w (x :> (y :> (z :> (f :> h)))) a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (:>) y (z :> (f :> h)) a -> (:>) x (y :> (z :> (f :> h))) a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Liftable t, Covariant_ u (->) (->)) => u ~> t u lift ((:>) y (z :> (f :> h)) a -> (:>) x (y :> (z :> (f :> h))) a) -> (f a -> (:>) y (z :> (f :> h)) a) -> f a -> (:>) x (y :> (z :> (f :> h))) a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (:>) z (f :> h) a -> (:>) y (z :> (f :> h)) a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Liftable t, Covariant_ u (->) (->)) => u ~> t u lift ((:>) z (f :> h) a -> (:>) y (z :> (f :> h)) a) -> (f a -> (:>) z (f :> h) a) -> f a -> (:>) y (z :> (f :> h)) a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (:>) f h a -> (:>) z (f :> h) a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Liftable t, Covariant_ u (->) (->)) => u ~> t u lift ((:>) f h a -> (:>) z (f :> h) a) -> (f a -> (:>) f h a) -> f a -> (:>) z (f :> h) a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . f a -> (:>) f h a forall (t :: * -> *) (u :: * -> *). (Monadic t, Pointable u (->)) => t ~> (t :> u) wrap instance ( Lowering t (Schematic Comonad u (v :< w :< x :< y :< z :< f :< h)) , Lowering u (Schematic Comonad v (w :< x :< y :< z :< f :< h)) , Lowering v (Schematic Comonad w (x :< y :< z :< f :< h)) , Lowering w (Schematic Comonad x (y :< z :< f :< h)) , Lowering x (Schematic Comonad y (z :< f :< h)) , Lowering y (Schematic Comonad z (f :< h)) , Lowering z (Schematic Comonad f h) , Lowering f h ) => Adaptable (t :< u :< v :< w :< x :< y :< z :< f :< h) h where adapt :: (:<) t (u :< (v :< (w :< (x :< (y :< (z :< (f :< h))))))) a -> h a adapt = (:<) f h a -> h a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Lowerable t, Covariant_ u (->) (->)) => t u ~> u lower ((:<) f h a -> h a) -> ((:<) t (u :< (v :< (w :< (x :< (y :< (z :< (f :< h))))))) a -> (:<) f h a) -> (:<) t (u :< (v :< (w :< (x :< (y :< (z :< (f :< h))))))) a -> h a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (:<) z (f :< h) a -> (:<) f h a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Lowerable t, Covariant_ u (->) (->)) => t u ~> u lower ((:<) z (f :< h) a -> (:<) f h a) -> ((:<) t (u :< (v :< (w :< (x :< (y :< (z :< (f :< h))))))) a -> (:<) z (f :< h) a) -> (:<) t (u :< (v :< (w :< (x :< (y :< (z :< (f :< h))))))) a -> (:<) f h a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (:<) y (z :< (f :< h)) a -> (:<) z (f :< h) a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Lowerable t, Covariant_ u (->) (->)) => t u ~> u lower ((:<) y (z :< (f :< h)) a -> (:<) z (f :< h) a) -> ((:<) t (u :< (v :< (w :< (x :< (y :< (z :< (f :< h))))))) a -> (:<) y (z :< (f :< h)) a) -> (:<) t (u :< (v :< (w :< (x :< (y :< (z :< (f :< h))))))) a -> (:<) z (f :< h) a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (:<) x (y :< (z :< (f :< h))) a -> (:<) y (z :< (f :< h)) a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Lowerable t, Covariant_ u (->) (->)) => t u ~> u lower ((:<) x (y :< (z :< (f :< h))) a -> (:<) y (z :< (f :< h)) a) -> ((:<) t (u :< (v :< (w :< (x :< (y :< (z :< (f :< h))))))) a -> (:<) x (y :< (z :< (f :< h))) a) -> (:<) t (u :< (v :< (w :< (x :< (y :< (z :< (f :< h))))))) a -> (:<) y (z :< (f :< h)) a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (:<) w (x :< (y :< (z :< (f :< h)))) a -> (:<) x (y :< (z :< (f :< h))) a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Lowerable t, Covariant_ u (->) (->)) => t u ~> u lower ((:<) w (x :< (y :< (z :< (f :< h)))) a -> (:<) x (y :< (z :< (f :< h))) a) -> ((:<) t (u :< (v :< (w :< (x :< (y :< (z :< (f :< h))))))) a -> (:<) w (x :< (y :< (z :< (f :< h)))) a) -> (:<) t (u :< (v :< (w :< (x :< (y :< (z :< (f :< h))))))) a -> (:<) x (y :< (z :< (f :< h))) a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (:<) v (w :< (x :< (y :< (z :< (f :< h))))) a -> (:<) w (x :< (y :< (z :< (f :< h)))) a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Lowerable t, Covariant_ u (->) (->)) => t u ~> u lower ((:<) v (w :< (x :< (y :< (z :< (f :< h))))) a -> (:<) w (x :< (y :< (z :< (f :< h)))) a) -> ((:<) t (u :< (v :< (w :< (x :< (y :< (z :< (f :< h))))))) a -> (:<) v (w :< (x :< (y :< (z :< (f :< h))))) a) -> (:<) t (u :< (v :< (w :< (x :< (y :< (z :< (f :< h))))))) a -> (:<) w (x :< (y :< (z :< (f :< h)))) a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (:<) u (v :< (w :< (x :< (y :< (z :< (f :< h)))))) a -> (:<) v (w :< (x :< (y :< (z :< (f :< h))))) a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Lowerable t, Covariant_ u (->) (->)) => t u ~> u lower ((:<) u (v :< (w :< (x :< (y :< (z :< (f :< h)))))) a -> (:<) v (w :< (x :< (y :< (z :< (f :< h))))) a) -> ((:<) t (u :< (v :< (w :< (x :< (y :< (z :< (f :< h))))))) a -> (:<) u (v :< (w :< (x :< (y :< (z :< (f :< h)))))) a) -> (:<) t (u :< (v :< (w :< (x :< (y :< (z :< (f :< h))))))) a -> (:<) v (w :< (x :< (y :< (z :< (f :< h))))) a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (:<) t (u :< (v :< (w :< (x :< (y :< (z :< (f :< h))))))) a -> (:<) u (v :< (w :< (x :< (y :< (z :< (f :< h)))))) a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Lowerable t, Covariant_ u (->) (->)) => t u ~> u lower instance ( Lowering t (Schematic Comonad u (v :< w :< x :< y :< z :< f :< h)) , Lowering u (Schematic Comonad v (w :< x :< y :< z :< f :< h)) , Lowering v (Schematic Comonad w (x :< y :< z :< f :< h)) , Lowering w (Schematic Comonad x (y :< z :< f :< h)) , Lowering x (Schematic Comonad y (z :< f :< h)) , Lowering y (Schematic Comonad z (f :< h)) , Lowering z (Schematic Comonad f h) , Bringable f h ) => Adaptable (t :< u :< v :< w :< x :< y :< z :< f :< h) f where adapt :: (:<) t (u :< (v :< (w :< (x :< (y :< (z :< (f :< h))))))) a -> f a adapt = (:<) f h a -> f a forall (t :: * -> *) (u :: * -> *). (Comonadic t, Extractable u (->)) => (t :< u) ~> t bring ((:<) f h a -> f a) -> ((:<) t (u :< (v :< (w :< (x :< (y :< (z :< (f :< h))))))) a -> (:<) f h a) -> (:<) t (u :< (v :< (w :< (x :< (y :< (z :< (f :< h))))))) a -> f a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (:<) z (f :< h) a -> (:<) f h a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Lowerable t, Covariant_ u (->) (->)) => t u ~> u lower ((:<) z (f :< h) a -> (:<) f h a) -> ((:<) t (u :< (v :< (w :< (x :< (y :< (z :< (f :< h))))))) a -> (:<) z (f :< h) a) -> (:<) t (u :< (v :< (w :< (x :< (y :< (z :< (f :< h))))))) a -> (:<) f h a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (:<) y (z :< (f :< h)) a -> (:<) z (f :< h) a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Lowerable t, Covariant_ u (->) (->)) => t u ~> u lower ((:<) y (z :< (f :< h)) a -> (:<) z (f :< h) a) -> ((:<) t (u :< (v :< (w :< (x :< (y :< (z :< (f :< h))))))) a -> (:<) y (z :< (f :< h)) a) -> (:<) t (u :< (v :< (w :< (x :< (y :< (z :< (f :< h))))))) a -> (:<) z (f :< h) a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (:<) x (y :< (z :< (f :< h))) a -> (:<) y (z :< (f :< h)) a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Lowerable t, Covariant_ u (->) (->)) => t u ~> u lower ((:<) x (y :< (z :< (f :< h))) a -> (:<) y (z :< (f :< h)) a) -> ((:<) t (u :< (v :< (w :< (x :< (y :< (z :< (f :< h))))))) a -> (:<) x (y :< (z :< (f :< h))) a) -> (:<) t (u :< (v :< (w :< (x :< (y :< (z :< (f :< h))))))) a -> (:<) y (z :< (f :< h)) a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (:<) w (x :< (y :< (z :< (f :< h)))) a -> (:<) x (y :< (z :< (f :< h))) a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Lowerable t, Covariant_ u (->) (->)) => t u ~> u lower ((:<) w (x :< (y :< (z :< (f :< h)))) a -> (:<) x (y :< (z :< (f :< h))) a) -> ((:<) t (u :< (v :< (w :< (x :< (y :< (z :< (f :< h))))))) a -> (:<) w (x :< (y :< (z :< (f :< h)))) a) -> (:<) t (u :< (v :< (w :< (x :< (y :< (z :< (f :< h))))))) a -> (:<) x (y :< (z :< (f :< h))) a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (:<) v (w :< (x :< (y :< (z :< (f :< h))))) a -> (:<) w (x :< (y :< (z :< (f :< h)))) a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Lowerable t, Covariant_ u (->) (->)) => t u ~> u lower ((:<) v (w :< (x :< (y :< (z :< (f :< h))))) a -> (:<) w (x :< (y :< (z :< (f :< h)))) a) -> ((:<) t (u :< (v :< (w :< (x :< (y :< (z :< (f :< h))))))) a -> (:<) v (w :< (x :< (y :< (z :< (f :< h))))) a) -> (:<) t (u :< (v :< (w :< (x :< (y :< (z :< (f :< h))))))) a -> (:<) w (x :< (y :< (z :< (f :< h)))) a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (:<) u (v :< (w :< (x :< (y :< (z :< (f :< h)))))) a -> (:<) v (w :< (x :< (y :< (z :< (f :< h))))) a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Lowerable t, Covariant_ u (->) (->)) => t u ~> u lower ((:<) u (v :< (w :< (x :< (y :< (z :< (f :< h)))))) a -> (:<) v (w :< (x :< (y :< (z :< (f :< h))))) a) -> ((:<) t (u :< (v :< (w :< (x :< (y :< (z :< (f :< h))))))) a -> (:<) u (v :< (w :< (x :< (y :< (z :< (f :< h)))))) a) -> (:<) t (u :< (v :< (w :< (x :< (y :< (z :< (f :< h))))))) a -> (:<) v (w :< (x :< (y :< (z :< (f :< h))))) a forall (m :: * -> * -> *) b c a. Category m => m b c -> m a b -> m a c . (:<) t (u :< (v :< (w :< (x :< (y :< (z :< (f :< h))))))) a -> (:<) u (v :< (w :< (x :< (y :< (z :< (f :< h)))))) a forall (t :: (* -> *) -> * -> *) (u :: * -> *). (Lowerable t, Covariant_ u (->) (->)) => t u ~> u lower instance (Covariant u, Covariant_ u (->) (->), Hoistable ((:>) t), Adaptable u u') => Adaptable (t :> u) (t :> u') where adapt :: (:>) t u a -> (:>) t u' a adapt = (u ~> u') -> (t :> u) ~> (t :> u') forall k (t :: (* -> *) -> k -> *) (u :: * -> *) (v :: * -> *). (Hoistable t, Covariant_ u (->) (->)) => (u ~> v) -> t u ~> t v hoist u ~> u' forall k (t :: k -> *) (u :: k -> *). Adaptable t u => t ~> u adapt instance ( Covariant_ v (->) (->) , Covariant_ (Schematic Monad u v) (->) (->) , Hoistable ((:>) (t :> u)) , Hoistable (Schematic Monad t) , Hoistable (Schematic Monad u) , Adaptable v v' ) => Adaptable (t :> u :> v) (t :> u :> v') where adapt :: (:>) t (u :> v) a -> (:>) t (u :> v') a adapt = ((u :> v) ~> (u :> v')) -> (t :> (u :> v)) ~> (t :> (u :> v')) forall k (t :: (* -> *) -> k -> *) (u :: * -> *) (v :: * -> *). (Hoistable t, Covariant_ u (->) (->)) => (u ~> v) -> t u ~> t v hoist ((v ~> v') -> (u :> v) ~> (u :> v') forall k (t :: (* -> *) -> k -> *) (u :: * -> *) (v :: * -> *). (Hoistable t, Covariant_ u (->) (->)) => (u ~> v) -> t u ~> t v hoist v ~> v' forall k (t :: k -> *) (u :: k -> *). Adaptable t u => t ~> u adapt) instance ( Covariant_ u (->) (->) , Covariant_ v (->) (->) , Covariant_ w (->) (->) , Covariant_ (Schematic Monad u v) (->) (->) , Covariant_ (Schematic Monad u (v :> w)) (->) (->) , Covariant_ (Schematic Monad v w) (->) (->) , Hoistable ((:>) (t :> u :> v)) , Hoistable (Schematic Monad t) , Hoistable (Schematic Monad u) , Hoistable (Schematic Monad v) , Adaptable w w' ) => Adaptable (t :> u :> v :> w) (t :> u :> v :> w') where adapt :: (:>) t (u :> (v :> w)) a -> (:>) t (u :> (v :> w')) a adapt = ((u :> (v :> w)) ~> (u :> (v :> w'))) -> (t :> (u :> (v :> w))) ~> (t :> (u :> (v :> w'))) forall k (t :: (* -> *) -> k -> *) (u :: * -> *) (v :: * -> *). (Hoistable t, Covariant_ u (->) (->)) => (u ~> v) -> t u ~> t v hoist (((v :> w) ~> (v :> w')) -> (u :> (v :> w)) ~> (u :> (v :> w')) forall k (t :: (* -> *) -> k -> *) (u :: * -> *) (v :: * -> *). (Hoistable t, Covariant_ u (->) (->)) => (u ~> v) -> t u ~> t v hoist ((w ~> w') -> (v :> w) ~> (v :> w') forall k (t :: (* -> *) -> k -> *) (u :: * -> *) (v :: * -> *). (Hoistable t, Covariant_ u (->) (->)) => (u ~> v) -> t u ~> t v hoist w ~> w' forall k (t :: k -> *) (u :: k -> *). Adaptable t u => t ~> u adapt)) instance ( Covariant_ x (->) (->) , Covariant_ (Schematic Monad u (v :> (w :> x))) (->) (->) , Covariant_ (Schematic Monad v (w :> x)) (->) (->) , Covariant_ (Schematic Monad w x) (->) (->) , Hoistable ((:>) (t :> u :> v)) , Hoistable (Schematic Monad t) , Hoistable (Schematic Monad u) , Hoistable (Schematic Monad v) , Hoistable (Schematic Monad w) , Adaptable x x' ) => Adaptable (t :> u :> v :> w :> x) (t :> u :> v :> w :> x') where adapt :: (:>) t (u :> (v :> (w :> x))) a -> (:>) t (u :> (v :> (w :> x'))) a adapt = ((u :> (v :> (w :> x))) ~> (u :> (v :> (w :> x')))) -> (t :> (u :> (v :> (w :> x)))) ~> (t :> (u :> (v :> (w :> x')))) forall k (t :: (* -> *) -> k -> *) (u :: * -> *) (v :: * -> *). (Hoistable t, Covariant_ u (->) (->)) => (u ~> v) -> t u ~> t v hoist (((v :> (w :> x)) ~> (v :> (w :> x'))) -> (u :> (v :> (w :> x))) ~> (u :> (v :> (w :> x'))) forall k (t :: (* -> *) -> k -> *) (u :: * -> *) (v :: * -> *). (Hoistable t, Covariant_ u (->) (->)) => (u ~> v) -> t u ~> t v hoist (((w :> x) ~> (w :> x')) -> (v :> (w :> x)) ~> (v :> (w :> x')) forall k (t :: (* -> *) -> k -> *) (u :: * -> *) (v :: * -> *). (Hoistable t, Covariant_ u (->) (->)) => (u ~> v) -> t u ~> t v hoist ((x ~> x') -> (w :> x) ~> (w :> x') forall k (t :: (* -> *) -> k -> *) (u :: * -> *) (v :: * -> *). (Hoistable t, Covariant_ u (->) (->)) => (u ~> v) -> t u ~> t v hoist x ~> x' forall k (t :: k -> *) (u :: k -> *). Adaptable t u => t ~> u adapt))) instance ( Covariant_ y (->) (->) , Covariant_ (Schematic Monad u (v :> (w :> (x :> y)))) (->) (->) , Covariant_ (Schematic Monad v (w :> (x :> y))) (->) (->) , Covariant_ (Schematic Monad w (x :> y)) (->) (->) , Covariant_ (Schematic Monad x y) (->) (->) , Hoistable ((:>) (t :> u :> v :> w)) , Hoistable (Schematic Monad t) , Hoistable (Schematic Monad u) , Hoistable (Schematic Monad v) , Hoistable (Schematic Monad w) , Hoistable (Schematic Monad x) , Adaptable y y' ) => Adaptable (t :> u :> v :> w :> x :> y) (t :> u :> v :> w :> x :> y') where adapt :: (:>) t (u :> (v :> (w :> (x :> y)))) a -> (:>) t (u :> (v :> (w :> (x :> y')))) a adapt = ((u :> (v :> (w :> (x :> y)))) ~> (u :> (v :> (w :> (x :> y'))))) -> (t :> (u :> (v :> (w :> (x :> y))))) ~> (t :> (u :> (v :> (w :> (x :> y'))))) forall k (t :: (* -> *) -> k -> *) (u :: * -> *) (v :: * -> *). (Hoistable t, Covariant_ u (->) (->)) => (u ~> v) -> t u ~> t v hoist (((v :> (w :> (x :> y))) ~> (v :> (w :> (x :> y')))) -> (u :> (v :> (w :> (x :> y)))) ~> (u :> (v :> (w :> (x :> y')))) forall k (t :: (* -> *) -> k -> *) (u :: * -> *) (v :: * -> *). (Hoistable t, Covariant_ u (->) (->)) => (u ~> v) -> t u ~> t v hoist (((w :> (x :> y)) ~> (w :> (x :> y'))) -> (v :> (w :> (x :> y))) ~> (v :> (w :> (x :> y'))) forall k (t :: (* -> *) -> k -> *) (u :: * -> *) (v :: * -> *). (Hoistable t, Covariant_ u (->) (->)) => (u ~> v) -> t u ~> t v hoist (((x :> y) ~> (x :> y')) -> (w :> (x :> y)) ~> (w :> (x :> y')) forall k (t :: (* -> *) -> k -> *) (u :: * -> *) (v :: * -> *). (Hoistable t, Covariant_ u (->) (->)) => (u ~> v) -> t u ~> t v hoist ((y ~> y') -> (x :> y) ~> (x :> y') forall k (t :: (* -> *) -> k -> *) (u :: * -> *) (v :: * -> *). (Hoistable t, Covariant_ u (->) (->)) => (u ~> v) -> t u ~> t v hoist y ~> y' forall k (t :: k -> *) (u :: k -> *). Adaptable t u => t ~> u adapt)))) instance ( Covariant z, Covariant_ z (->) (->) , Covariant_ (Schematic Monad u (v :> (w :> (x :> (y :> z))))) (->) (->) , Covariant_ (Schematic Monad v (w :> (x :> (y :> z)))) (->) (->) , Covariant_ (Schematic Monad w (x :> (y :> z))) (->) (->) , Covariant_ (Schematic Monad x (y :> z)) (->) (->) , Covariant_ (Schematic Monad y z) (->) (->) , Hoistable ((:>) (t :> u :> v :> w)) , Hoistable (Schematic Monad t) , Hoistable (Schematic Monad u) , Hoistable (Schematic Monad v) , Hoistable (Schematic Monad w) , Hoistable (Schematic Monad x) , Hoistable (Schematic Monad y) , Adaptable z z' ) => Adaptable (t :> u :> v :> w :> x :> y :> z) (t :> u :> v :> w :> x :> y :> z') where adapt :: (:>) t (u :> (v :> (w :> (x :> (y :> z))))) a -> (:>) t (u :> (v :> (w :> (x :> (y :> z'))))) a adapt = ((u :> (v :> (w :> (x :> (y :> z))))) ~> (u :> (v :> (w :> (x :> (y :> z')))))) -> (t :> (u :> (v :> (w :> (x :> (y :> z)))))) ~> (t :> (u :> (v :> (w :> (x :> (y :> z')))))) forall k (t :: (* -> *) -> k -> *) (u :: * -> *) (v :: * -> *). (Hoistable t, Covariant_ u (->) (->)) => (u ~> v) -> t u ~> t v hoist (((v :> (w :> (x :> (y :> z)))) ~> (v :> (w :> (x :> (y :> z'))))) -> (u :> (v :> (w :> (x :> (y :> z))))) ~> (u :> (v :> (w :> (x :> (y :> z'))))) forall k (t :: (* -> *) -> k -> *) (u :: * -> *) (v :: * -> *). (Hoistable t, Covariant_ u (->) (->)) => (u ~> v) -> t u ~> t v hoist (((w :> (x :> (y :> z))) ~> (w :> (x :> (y :> z')))) -> (v :> (w :> (x :> (y :> z)))) ~> (v :> (w :> (x :> (y :> z')))) forall k (t :: (* -> *) -> k -> *) (u :: * -> *) (v :: * -> *). (Hoistable t, Covariant_ u (->) (->)) => (u ~> v) -> t u ~> t v hoist (((x :> (y :> z)) ~> (x :> (y :> z'))) -> (w :> (x :> (y :> z))) ~> (w :> (x :> (y :> z'))) forall k (t :: (* -> *) -> k -> *) (u :: * -> *) (v :: * -> *). (Hoistable t, Covariant_ u (->) (->)) => (u ~> v) -> t u ~> t v hoist (((y :> z) ~> (y :> z')) -> (x :> (y :> z)) ~> (x :> (y :> z')) forall k (t :: (* -> *) -> k -> *) (u :: * -> *) (v :: * -> *). (Hoistable t, Covariant_ u (->) (->)) => (u ~> v) -> t u ~> t v hoist (y :> z) ~> (y :> z') forall k (t :: k -> *) (u :: k -> *). Adaptable t u => t ~> u adapt)))) instance ( Covariant f, Covariant_ f (->) (->) , Covariant (Schematic Monad u v) , Covariant (Schematic Monad u (v :> w)) , Covariant (Schematic Monad u (v :> (w :> x))) , Covariant (Schematic Monad u (v :> (w :> (x :> y)))) , Covariant (Schematic Monad u (v :> (w :> (x :> (y :> z))))) , Covariant (Schematic Monad u (v :> (w :> (x :> (y :> (z :> f)))))) , Covariant_ (Schematic Monad u (v :> (w :> (x :> (y :> (z :> f)))))) (->) (->) , Covariant (Schematic Monad v (w :> x)) , Covariant (Schematic Monad v (w :> (x :> y))) , Covariant (Schematic Monad v (w :> (x :> (y :> z)))) , Covariant (Schematic Monad v (w :> (x :> (y :> (z :> f))))) , Covariant_ (Schematic Monad v (w :> (x :> (y :> (z :> f))))) (->) (->) , Covariant (Schematic Monad w (x :> y)) , Covariant (Schematic Monad w (x :> (y :> z))) , Covariant (Schematic Monad w (x :> (y :> (z :> f)))) , Covariant_ (Schematic Monad w (x :> (y :> (z :> f)))) (->) (->) , Covariant (Schematic Monad x y) , Covariant (Schematic Monad x (y :> z)) , Covariant (Schematic Monad x (y :> (z :> f))) , Covariant_ (Schematic Monad x (y :> (z :> f))) (->) (->) , Covariant (Schematic Monad y z) , Covariant (Schematic Monad y (z :> f)) , Covariant_ (Schematic Monad y (z :> f)) (->) (->) , Covariant (Schematic Monad z f) , Covariant_ (Schematic Monad z f) (->) (->) , Hoistable ((:>) (t :> u :> v :> w)) , Hoistable (Schematic Monad t) , Hoistable (Schematic Monad u) , Hoistable (Schematic Monad v) , Hoistable (Schematic Monad w) , Hoistable (Schematic Monad x) , Hoistable (Schematic Monad y) , Hoistable (Schematic Monad z) , Adaptable f f' ) => Adaptable (t :> u :> v :> w :> x :> y :> z :> f) (t :> u :> v :> w :> x :> y :> z :> f') where adapt :: (:>) t (u :> (v :> (w :> (x :> (y :> (z :> f)))))) a -> (:>) t (u :> (v :> (w :> (x :> (y :> (z :> f')))))) a adapt = ((u :> (v :> (w :> (x :> (y :> (z :> f)))))) ~> (u :> (v :> (w :> (x :> (y :> (z :> f'))))))) -> (t :> (u :> (v :> (w :> (x :> (y :> (z :> f))))))) ~> (t :> (u :> (v :> (w :> (x :> (y :> (z :> f'))))))) forall k (t :: (* -> *) -> k -> *) (u :: * -> *) (v :: * -> *). (Hoistable t, Covariant_ u (->) (->)) => (u ~> v) -> t u ~> t v hoist (((v :> (w :> (x :> (y :> (z :> f))))) ~> (v :> (w :> (x :> (y :> (z :> f')))))) -> (u :> (v :> (w :> (x :> (y :> (z :> f)))))) ~> (u :> (v :> (w :> (x :> (y :> (z :> f')))))) forall k (t :: (* -> *) -> k -> *) (u :: * -> *) (v :: * -> *). (Hoistable t, Covariant_ u (->) (->)) => (u ~> v) -> t u ~> t v hoist (((w :> (x :> (y :> (z :> f)))) ~> (w :> (x :> (y :> (z :> f'))))) -> (v :> (w :> (x :> (y :> (z :> f))))) ~> (v :> (w :> (x :> (y :> (z :> f'))))) forall k (t :: (* -> *) -> k -> *) (u :: * -> *) (v :: * -> *). (Hoistable t, Covariant_ u (->) (->)) => (u ~> v) -> t u ~> t v hoist (((x :> (y :> (z :> f))) ~> (x :> (y :> (z :> f')))) -> (w :> (x :> (y :> (z :> f)))) ~> (w :> (x :> (y :> (z :> f')))) forall k (t :: (* -> *) -> k -> *) (u :: * -> *) (v :: * -> *). (Hoistable t, Covariant_ u (->) (->)) => (u ~> v) -> t u ~> t v hoist (((y :> (z :> f)) ~> (y :> (z :> f'))) -> (x :> (y :> (z :> f))) ~> (x :> (y :> (z :> f'))) forall k (t :: (* -> *) -> k -> *) (u :: * -> *) (v :: * -> *). (Hoistable t, Covariant_ u (->) (->)) => (u ~> v) -> t u ~> t v hoist (((z :> f) ~> (z :> f')) -> (y :> (z :> f)) ~> (y :> (z :> f')) forall k (t :: (* -> *) -> k -> *) (u :: * -> *) (v :: * -> *). (Hoistable t, Covariant_ u (->) (->)) => (u ~> v) -> t u ~> t v hoist (z :> f) ~> (z :> f') forall k (t :: k -> *) (u :: k -> *). Adaptable t u => t ~> u adapt))))) instance ( Covariant h, Covariant_ h (->) (->) , Covariant_ (Schematic Monad u (v :> (w :> (x :> (y :> (z :> (f :> h))))))) (->) (->) , Covariant_ (Schematic Monad v (w :> (x :> (y :> (z :> (f :> h)))))) (->) (->) , Covariant_ (Schematic Monad w (x :> (y :> (z :> (f :> h))))) (->) (->) , Covariant (Schematic Monad x y) , Covariant (Schematic Monad x (y :> z)) , Covariant (Schematic Monad x (y :> (z :> f))) , Covariant (Schematic Monad x (y :> (z :> (f :> h)))) , Covariant_ (Schematic Monad x (y :> (z :> (f :> h)))) (->) (->) , Covariant (Schematic Monad y z) , Covariant (Schematic Monad y (z :> f)) , Covariant (Schematic Monad y (z :> (f :> h))) , Covariant_ (Schematic Monad y (z :> (f :> h))) (->) (->) , Covariant (Schematic Monad z f) , Covariant (Schematic Monad z (f :> h)) , Covariant_ (Schematic Monad z (f :> h)) (->) (->) , Covariant (Schematic Monad f h) , Covariant_ (Schematic Monad f h) (->) (->) , Hoistable ((:>) (t :> u :> v :> w)) , Hoistable (Schematic Monad t) , Hoistable (Schematic Monad u) , Hoistable (Schematic Monad v) , Hoistable (Schematic Monad w) , Hoistable (Schematic Monad x) , Hoistable (Schematic Monad y) , Hoistable (Schematic Monad z) , Hoistable (Schematic Monad f) , Adaptable h h' ) => Adaptable (t :> u :> v :> w :> x :> y :> z :> f :> h) (t :> u :> v :> w :> x :> y :> z :> f :> h') where adapt :: (:>) t (u :> (v :> (w :> (x :> (y :> (z :> (f :> h))))))) a -> (:>) t (u :> (v :> (w :> (x :> (y :> (z :> (f :> h'))))))) a adapt = ((u :> (v :> (w :> (x :> (y :> (z :> (f :> h))))))) ~> (u :> (v :> (w :> (x :> (y :> (z :> (f :> h')))))))) -> (t :> (u :> (v :> (w :> (x :> (y :> (z :> (f :> h)))))))) ~> (t :> (u :> (v :> (w :> (x :> (y :> (z :> (f :> h')))))))) forall k (t :: (* -> *) -> k -> *) (u :: * -> *) (v :: * -> *). (Hoistable t, Covariant_ u (->) (->)) => (u ~> v) -> t u ~> t v hoist (((v :> (w :> (x :> (y :> (z :> (f :> h)))))) ~> (v :> (w :> (x :> (y :> (z :> (f :> h'))))))) -> (u :> (v :> (w :> (x :> (y :> (z :> (f :> h))))))) ~> (u :> (v :> (w :> (x :> (y :> (z :> (f :> h'))))))) forall k (t :: (* -> *) -> k -> *) (u :: * -> *) (v :: * -> *). (Hoistable t, Covariant_ u (->) (->)) => (u ~> v) -> t u ~> t v hoist (((w :> (x :> (y :> (z :> (f :> h))))) ~> (w :> (x :> (y :> (z :> (f :> h')))))) -> (v :> (w :> (x :> (y :> (z :> (f :> h)))))) ~> (v :> (w :> (x :> (y :> (z :> (f :> h')))))) forall k (t :: (* -> *) -> k -> *) (u :: * -> *) (v :: * -> *). (Hoistable t, Covariant_ u (->) (->)) => (u ~> v) -> t u ~> t v hoist (((x :> (y :> (z :> (f :> h)))) ~> (x :> (y :> (z :> (f :> h'))))) -> (w :> (x :> (y :> (z :> (f :> h))))) ~> (w :> (x :> (y :> (z :> (f :> h'))))) forall k (t :: (* -> *) -> k -> *) (u :: * -> *) (v :: * -> *). (Hoistable t, Covariant_ u (->) (->)) => (u ~> v) -> t u ~> t v hoist (((y :> (z :> (f :> h))) ~> (y :> (z :> (f :> h')))) -> (x :> (y :> (z :> (f :> h)))) ~> (x :> (y :> (z :> (f :> h')))) forall k (t :: (* -> *) -> k -> *) (u :: * -> *) (v :: * -> *). (Hoistable t, Covariant_ u (->) (->)) => (u ~> v) -> t u ~> t v hoist (((z :> (f :> h)) ~> (z :> (f :> h'))) -> (y :> (z :> (f :> h))) ~> (y :> (z :> (f :> h'))) forall k (t :: (* -> *) -> k -> *) (u :: * -> *) (v :: * -> *). (Hoistable t, Covariant_ u (->) (->)) => (u ~> v) -> t u ~> t v hoist (((f :> h) ~> (f :> h')) -> (z :> (f :> h)) ~> (z :> (f :> h')) forall k (t :: (* -> *) -> k -> *) (u :: * -> *) (v :: * -> *). (Hoistable t, Covariant_ u (->) (->)) => (u ~> v) -> t u ~> t v hoist (f :> h) ~> (f :> h') forall k (t :: k -> *) (u :: k -> *). Adaptable t u => t ~> u adapt))))))