diff options
author | Kaz Kylheku <kaz@kylheku.com> | 2016-12-25 21:26:26 -0800 |
---|---|---|
committer | Kaz Kylheku <kaz@kylheku.com> | 2016-12-25 21:26:26 -0800 |
commit | cfa85a5389175f3f0efc81aaa6f3a6e004f5c16f (patch) | |
tree | 7b14f10e002fb51a8c9fd8ed495213a0600363f9 | |
parent | 72bc70f02552fedd5a11ea3fa3d07ac41eb8ff02 (diff) | |
download | txr-cfa85a5389175f3f0efc81aaa6f3a6e004f5c16f.tar.gz txr-cfa85a5389175f3f0efc81aaa6f3a6e004f5c16f.tar.bz2 txr-cfa85a5389175f3f0efc81aaa6f3a6e004f5c16f.zip |
Add qquot optimization for ranges.
* eval.c (optimize_qquote_form): Check for a rcons
forms. If thearguments are nothing but quoted forms,
convert to literal range.
-rw-r--r-- | eval.c | 10 |
1 files changed, 10 insertions, 0 deletions
@@ -2870,6 +2870,16 @@ static val optimize_qquote_form(val form) return rlcp_tree(cons(list_s, args), form); } + if (sym == rcons_s) { + if (args && cdr(args) && !cddr(args) && + all_satisfy(args, quote_form_p_f, nil)) + { + val args_noq = mapcar(second_f, args); + return rlcp(rcons(first(args_noq), second(args_noq)), form); + } + return form; + } + return form; } } |