ref: f3d7e4127dbfc7876ad34dba86920d3601733358
parent: e54c08b89348801b7d7e1101e456899fb785ffdb
author: Lennart Augustsson <lennart@augustsson.net>
date: Sun Dec 29 06:47:10 EST 2024
Refactor
--- a/src/MicroHs/Deriving.hs
+++ b/src/MicroHs/Deriving.hs
@@ -141,7 +141,7 @@
hdr = EApp etyp (EVar $ qualIdent mn i)
mdl = ELit loc $ LStr $ unIdent mn
nam = ELit loc $ LStr $ unIdent i
- eqns = eEqns [eDummy] $ eApp2 (EVar imkTyConApp) (eApp2 (EVar imkTyCon) mdl nam) (EListish (LList []))
+ eqns = eEqns [eDummy] $ eAppI2 imkTyConApp (eAppI2 imkTyCon mdl nam) (EListish (LList []))
inst = Instance hdr [BFcn itypeRep eqns]
return [inst]
--- a/src/MicroHs/Expr.hs
+++ b/src/MicroHs/Expr.hs
@@ -30,7 +30,7 @@
Con(..), conIdent, conArity, conFields,
tupleConstr, getTupleConstr,
mkTupleSel,
- eApp2, eApp3, eApps,
+ eApp2, eAppI2, eApp3, eApps,
lhsToType,
subst,
allVarsExpr, allVarsBind, allVarsEqns, allVarsPat,
@@ -333,6 +333,9 @@
eApp2 :: Expr -> Expr -> Expr -> Expr
eApp2 a b c = EApp (EApp a b) c
+
+eAppI2 :: Ident -> Expr -> Expr -> Expr
+eAppI2 a b c = EApp (EApp (EVar a) b) c
eApp3 :: Expr -> Expr -> Expr -> Expr -> Expr
eApp3 a b c d = EApp (eApp2 a b c) d
--- a/src/MicroHs/Parse.hs
+++ b/src/MicroHs/Parse.hs
@@ -407,7 +407,7 @@
where
pCtx = ((:[]) <$> pTypeApp)
<|> (eq <$> pTypeArg <*> pTilde <*> pTypeArg) -- A hack to allow a~b => ...
- eq t1 i t2 = [eApp2 (EVar i) t1 t2]
+ eq t1 i t2 = [eAppI2 i t1 t2]
pTilde = do i <- pQSymOper; guard (i == mkIdent "~"); return i
pDRArrow :: P ()
--- a/src/MicroHs/TypeCheck.hs
+++ b/src/MicroHs/TypeCheck.hs
@@ -3117,7 +3117,7 @@
addConstraint d (mkEqType loc t1 t2)
mkEqType :: SLoc -> EType -> EType -> EConstraint
-mkEqType loc t1 t2 = EApp (EApp (EVar (mkIdentSLoc loc nameTypeEq)) t1) t2
+mkEqType loc t1 t2 = eAppI2 (mkIdentSLoc loc nameTypeEq) t1 t2
-- Possibly solve a type equality.
solveEq :: TypeEqTable -> EType -> EType -> Maybe (Expr, [(EType, EType)])