; let -- `tyvars` = [a,b]
tyvars = tyConTyVars tycon
- -- rep0Ty has kind `kind of D` -> *
- -- rep_kind = tyConKind tycon `mkArrowKind` liftedTypeKind
- -- SLPJ The above type looks quite wrong to me!
- -- The kind sig in the comment for rep0Ty looks right
- --
+ -- rep0Ty has kind * -> *
rep_kind = liftedTypeKind `mkArrowKind` liftedTypeKind
-- `appT` = D a b
, metaS :: [[TyCon]] }
instance Outputable MetaTyCons where
- ppr (MetaTyCons d c s) = ppr d <+> ppr c <+> ppr s
+ ppr (MetaTyCons d c s) = ppr d $$ vcat (map ppr c) $$ vcat (map ppr (concat s))
metaTyCons2TyCons :: MetaTyCons -> [TyCon]
metaTyCons2TyCons (MetaTyCons d c s) = d : c ++ concat s