instance (Sym_Maybe term, Sym_Lambda term) => Sym_Maybe (BetaT term)
-- Typing
+instance NameTyOf Maybe where
+ nameTyOf _c = ["Maybe"] `Mod` "Maybe"
instance FixityOf Maybe
instance ClassInstancesFor Maybe where
- proveConstraintFor _ (TyApp _ (TyConst _ _ q) c)
- | Just HRefl <- proj_ConstKiTy @_ @Maybe c
+ proveConstraintFor _ (TyConst _ _ q :$ m)
+ | Just HRefl <- proj_ConstKiTy @_ @Maybe m
= case () of
_ | Just Refl <- proj_Const @Applicative q -> Just Dict
- | Just Refl <- proj_Const @Foldable q -> Just Dict
- | Just Refl <- proj_Const @Functor q -> Just Dict
- | Just Refl <- proj_Const @Monad q -> Just Dict
+ | Just Refl <- proj_Const @Foldable q -> Just Dict
+ | Just Refl <- proj_Const @Functor q -> Just Dict
+ | Just Refl <- proj_Const @Monad q -> Just Dict
| Just Refl <- proj_Const @Traversable q -> Just Dict
_ -> Nothing
- proveConstraintFor _ (TyApp _ tq@(TyConst _ _ q) (TyApp _ c a))
- | Just HRefl <- proj_ConstKiTy @_ @Maybe c
+ proveConstraintFor _ (tq@(TyConst _ _ q) :$ m:@a)
+ | Just HRefl <- proj_ConstKiTy @_ @Maybe m
= case () of
_ | Just Refl <- proj_Const @Eq q
- , Just Dict <- proveConstraint (tq `tyApp` a) -> Just Dict
+ , Just Dict <- proveConstraint (tq`tyApp`a) -> Just Dict
| Just Refl <- proj_Const @Monoid q
- , Just Dict <- proveConstraint (tq `tyApp` a) -> Just Dict
+ , Just Dict <- proveConstraint (tq`tyApp`a) -> Just Dict
| Just Refl <- proj_Const @Show q
- , Just Dict <- proveConstraint (tq `tyApp` a) -> Just Dict
+ , Just Dict <- proveConstraint (tq`tyApp`a) -> Just Dict
| Just Refl <- proj_Const @MT.MonoFoldable q -> Just Dict
| Just Refl <- proj_Const @MT.MonoFunctor q -> Just Dict
_ -> Nothing
proveConstraintFor _c _q = Nothing
instance TypeInstancesFor Maybe where
- expandFamFor _c _len f (TyApp _ c a `TypesS` TypesZ)
+ expandFamFor _c _len f (m:@a `TypesS` TypesZ)
| Just HRefl <- proj_ConstKi @_ @Element f
- , Just HRefl <- proj_ConstKiTy @_ @Maybe c
+ , Just HRefl <- proj_ConstKiTy @_ @Maybe m
= Just a
expandFamFor _c _len _fam _as = Nothing