From 8ffd07054df02af3fff3eedd64144e148b015f57 Mon Sep 17 00:00:00 2001
From: Kaz Kylheku <kaz@kylheku.com>
Date: Sun, 25 Dec 2016 21:26:26 -0800
Subject: 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.
---
 eval.c | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/eval.c b/eval.c
index dbb7a21f..b192459a 100644
--- a/eval.c
+++ b/eval.c
@@ -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;
   }
 }
-- 
cgit v1.2.3