This module defines the category of types and functions, named `Typ`. Using this is more efficient than something like `Morphism`, as it erases the types at runtime.
data Typ : Type0 -> Type0 -> TypeBimonoidal Typ Either Pair (W0 Void) (W0 ())Braided Typ Pair (W0 ())Braided Typ Either (W0 Void)Cartesian Typ Pair (W0 ())CatBifunctor Typ Typ Typ PairCatBifunctor Typ Typ Typ EitherCatFunctor Linear Typ idCategory TypClosed Typ Pair TypHom (W0 ())Cocartesian Typ Either (W0 Void)Monoidal Typ Pair (W0 ())Monoidal Typ Either (W0 Void)Promonad0 TypSemigroupoid TyprunTyp : Typ a b -> a .runW0 -> b .runW0.runTyp : Typ a b -> a .runW0 -> b .runW0Typ_ : (0 _ : Type) -> (0 _ : Type) -> TypePair : Type0 -> Type0 -> Type0Either : Type0 -> Type0 -> Type0TypHom : Type0 -> Type0 -> Type0SemigroupoidTyp : Semigroupoid TypFromMonad : Monad m => CatMonad Typ (liftW m)FromTensor : Tensor ten i => Monoidal Typ (liftW2 ten) (W0 i)FromFunctor : Functor f => StrongFunctor Typ Pair (liftW f)FromApplicative : Applicative f => Bitraversable ten => StrongFunctor Typ (liftW2 ten) (liftW f)FromMonad : Monad m => Bitraversable ten => StrongMonad Typ (liftW2 ten) (liftW m)FromTensor : (Tensor ten i, Symmetric ten) => Braided Typ (liftW2 ten) (W0 i)Typ : SemigroupoidRTyp : CategoryRPair : BifunctorR Typ Typ TypEither : BifunctorR Typ Typ TypTypPair : MonoidalRTypEither : MonoidalRTypPair : BraidedRTypEither : BraidedRTyp : CartesianRTyp : CocartesianRTyp : ClosedRTyp : BimonoidalRTyp : RigCategoryRTyp : SymRigCategoryRTyp : DistributiveR