-@(dsApp e [t_1,..,t_n, e_1,..,e_n])@ returns something with the same
-value as:
-\begin{verbatim}
-e t_1 ... t_n e_1 .. e_n
-\end{verbatim}
-
-We're doing all this so we can saturate constructors (as painlessly as
-possible).
-
-\begin{code}
-dsApp :: TypecheckedHsExpr -- expr to desugar
- -> [DsCoreArg] -- accumulated ty/val args: NB:
- -> DsM CoreExpr -- final result
-
-dsApp (HsApp e1 e2) args
- = dsExpr e2 `thenDs` \ core_e2 ->
- dsApp e1 (VarArg core_e2 : args)
-
-dsApp (OpApp e1 op _ e2) args
- = dsExpr e1 `thenDs` \ core_e1 ->
- dsExpr e2 `thenDs` \ core_e2 ->
- dsApp op (VarArg core_e1 : VarArg core_e2 : args)
-
-dsApp (DictApp expr dicts) args
- = mapDs lookupEnvDs dicts `thenDs` \ core_dicts ->
- dsApp expr (map (VarArg . Var) core_dicts ++ args)
-
-dsApp (TyApp expr tys) args
- = dsApp expr (map TyArg tys ++ args)
-
--- we might should look out for SectionLs, etc., here, but we don't
-
-dsApp anything_else args
- = dsExpr anything_else `thenDs` \ core_expr ->
- mkAppDs core_expr args
-
-dsId v
- = lookupEnvDs v `thenDs` \ v' ->
- returnDs (Var v')
-\end{code}
-
-\begin{code}
-dsRbinds :: TypecheckedRecordBinds -- The field bindings supplied
- -> ([(Id, CoreArg)] -> DsM CoreExpr) -- A continuation taking the field
- -- bindings with atomic rhss
- -> DsM CoreExpr -- The result of the continuation,
- -- wrapped in suitable Lets
-
-dsRbinds [] continue_with
- = continue_with []
-
-dsRbinds ((sel_id, rhs, pun_flag) : rbinds) continue_with
- = dsExpr rhs `thenDs` \ rhs' ->
- dsExprToAtom (VarArg rhs') $ \ rhs_atom ->
- dsRbinds rbinds $ \ rbinds' ->
- continue_with ((sel_id, rhs_atom) : rbinds')
-\end{code}
-
-\begin{code}
--- do_unfold ty_env val_env (Lam (TyBinder tyvar) body) (TyArg ty : args)
--- = do_unfold (addOneToTyVarEnv ty_env tyvar ty) val_env body args
---
--- do_unfold ty_env val_env (Lam (ValBinder binder) body) (arg@(VarArg expr) : args)
--- = dsExprToAtom arg $ \ arg_atom ->
--- do_unfold ty_env
--- (addOneToIdEnv val_env binder (argToExpr arg_atom))
--- body args
---
--- do_unfold ty_env val_env body args
--- = -- Clone the remaining part of the template
--- uniqSMtoDsM (substCoreExpr val_env ty_env body) `thenDs` \ body' ->
---
--- -- Apply result to remaining arguments
--- mkAppDs body' args
-\end{code}
-