From 056e40ff3187e6807de9420e9d8d2f687017ce0e Mon Sep 17 00:00:00 2001 From: Kaz Kylheku Date: Thu, 27 Feb 2014 00:07:46 -0800 Subject: * eval.c (maybe_progn): New function. (expand_macrolet, expand_symacrolet): Use maybe_progn to eliminate unnecessary progn wrapping. --- eval.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) (limited to 'eval.c') diff --git a/eval.c b/eval.c index 9f5c2d0a..a1566c4c 100644 --- a/eval.c +++ b/eval.c @@ -1299,6 +1299,12 @@ static val expand_macro(val form, val expander, val menv) } } +static val maybe_progn(val forms) +{ + return if3(cdr(forms), cons(progn_s, forms), car(forms)); +} + + static val expand_macrolet(val form, val menv) { val body = cdr(form); @@ -1319,7 +1325,7 @@ static val expand_macrolet(val form, val menv) env_fbind(new_env, name, cons(nil, cons(params, cons(block, nil)))); } - return cons(progn_s, expand_forms(body, new_env)); + return maybe_progn(expand_forms(body, new_env)); } static val expand_symacrolet(val form, val menv) @@ -1336,7 +1342,7 @@ static val expand_symacrolet(val form, val menv) env_vbind(new_env, name, repl_ex); } - return cons(progn_s, expand_forms(body, new_env)); + return maybe_progn(expand_forms(body, new_env)); } /* -- cgit v1.2.3