ref: 445efb64b9d57131d40cf7c7318c176ecf97ab61
parent: f63867c6adcb110682f7b5b3ff180c6a5280e53e
parent: 71fe581917d7014d72c6d9966a134e04f7d1b5aa
author: Lennart Augustsson <lennart@augustsson.net>
date: Sat Jan 20 15:00:18 EST 2024
Merge branch 'master' of github.com:augustss/MicroHs
--- a/src/MicroHs/Desugar.hs
+++ b/src/MicroHs/Desugar.hs
@@ -541,8 +541,7 @@
(drops, keeps) = splitAt arity as
-- reverse n-ary apply
app :: [Ident] -> Exp -> Exp
- app [] e = e
- app (v:vs) e = app vs $ App e (Var v)
+ app vs e = apps e (map Var vs)
-- Replace n recursive args with call to vfcn'
repl :: [Ident] -> Exp -> Exp
repl vs (Lam i e) = app vs $ Lam i $ repl [] e
@@ -552,11 +551,7 @@
repl vs (Var v)
| v == fcn && take arity vs == drops = app (drop arity vs) $ vfcn'
repl vs e = app vs e
- -- n-ary lambda
- lam :: [Ident] -> Exp -> Exp
- lam [] e = e
- lam (v:vs) e = Lam v $ lam vs e
in if arity > 0
- then (fcn, lam drops $ letRecE fcn' (lam keeps (repl [] body)) vfcn')
+ then (fcn, lams drops $ letRecE fcn' (lams keeps (repl [] body)) vfcn')
else def
lazier def = def
--
⑨