representation and family type. It is accessible from :R123Map via
tyConFamilyCoercion_maybe and has kind
- Co123Map a b v :: {Map (a, b) v :=: :R123Map a b v}
+ Co123Map a b v :: {Map (a, b) v ~ :R123Map a b v}
The wrapper and worker of MapPair get the types
id_arg1 = mkTemplateLocal 1
(if null orig_arg_tys
- then ASSERT(not (null $ dataConDictTheta data_con)) mkPredTy $ head (dataConDictTheta data_con)
+ then ASSERT(not (null $ dataConDictTheta data_con))
+ mkPredTy $ head (dataConDictTheta data_con)
else head orig_arg_tys
)
-- we want to see that w is strict in its two arguments
wrap_unf = mkImplicitUnfolding $ Note InlineMe $
- mkLams wrap_tvs $
- mkLams eq_args $
- mkLams dict_args $ mkLams id_args $
- foldr mk_case con_app
- (zip (dict_args ++ id_args) all_strict_marks)
- i3 []
+ mkLams wrap_tvs $
+ mkLams eq_args $
+ mkLams dict_args $ mkLams id_args $
+ foldr mk_case con_app
+ (zip (dict_args ++ id_args) all_strict_marks)
+ i3 []
con_app _ rep_ids = wrapFamInstBody tycon res_ty_args $
Var wrk_id `mkTyApps` res_ty_args