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 | |
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.
-rw-r--r-- | ChangeLog | 6 | ||||
-rw-r--r-- | eval.c | 10 |
2 files changed, 14 insertions, 2 deletions
@@ -1,3 +1,9 @@ +2014-02-27 Kaz Kylheku <kaz@kylheku.com> + + * eval.c (maybe_progn): New function. + (expand_macrolet, expand_symacrolet): Use maybe_progn + to eliminate unnecessary progn wrapping. + 2014-02-26 Kaz Kylheku <kaz@kylheku.com> * eval.c (gun_s): New global variable. @@ -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)); } /* |