Gibbon.L0.ElimNewtype
elimNewtypes :: Monad m => Prog0 -> m Prog0 Source #
packedOccurs :: Var -> Ty0 -> Bool Source #
type TyMap = Map String ([Ty0] -> Ty0) Source #
mkPolyNames :: [TyVar] -> Ty0 -> [Ty0] -> Ty0 Source #
elimProgram :: Prog0 -> Prog0 Source #
elimE :: Set String -> TyMap -> DDefs Ty0 -> Exp0 -> Exp0 Source #
elimExt :: Set String -> TyMap -> DDefs Ty0 -> E0Ext Ty0 Ty0 -> E0Ext Ty0 Ty0 Source #
elimPrim :: TyMap -> Prim Ty0 -> Prim Ty0 Source #
elimTyScheme :: TyMap -> TyScheme -> TyScheme Source #
elimTy :: TyMap -> Ty0 -> Ty0 Source #