diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2014-02-27 00:07:46 -0800 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2014-02-27 00:07:46 -0800 |
commit | 056e40ff3187e6807de9420e9d8d2f687017ce0e (patch) | |
tree | d64159f551761d97305bc4b0fdb3d6ccdd1fd2d9 /eval.c | |
parent | 419532e133f79c256893e6a57e883ad9de7b034e (diff) | |
download | txr-056e40ff3187e6807de9420e9d8d2f687017ce0e.tar.gz txr-056e40ff3187e6807de9420e9d8d2f687017ce0e.tar.bz2 txr-056e40ff3187e6807de9420e9d8d2f687017ce0e.zip |
* eval.c (maybe_progn): New function.
(expand_macrolet, expand_symacrolet): Use maybe_progn
to eliminate unnecessary progn wrapping.
Diffstat (limited to 'eval.c')
-rw-r--r-- | eval.c | 10 |
1 files changed, 8 insertions, 2 deletions
@@ -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)); } /* |