The One Simple Trick For CPU Time Loss added by lemonboy on Sun Mar 26 23:27:56 2017

diff --git a/expand.scm b/expand.scm
index 8020be32..67c5efdd 100644
--- a/expand.scm
+++ b/expand.scm
@@ -1245,14 +1245,16 @@
                               `(,(caddr clause) ,tmp)
                               `(##core#begin ,@(cdr clause))))
                          (else
-                          `(##core#if (,%or ,@(##sys#map
-                                               (lambda (x) `(,%eqv? ,tmp ',x))
-                                               (car clause)))
-                                      ,(if (and (fx= (length clause) 3) ; ((...) => expr)
-                                                (c %=> (cadr clause)))
+                           (let l0 ((todo (car clause)))
+                             (if (null? todo)
+                                 (expand rclauses #f)
+                                 `(##core#if ,`(,%eqv? ,tmp ',(car todo))
+                                   ,(if (and (fx= (length clause) 3)
+                                             (c %=> (cadr clause)))
                                            `(,(caddr clause) ,tmp)
                                            `(##core#begin ,@(cdr clause)))
-                                      ,(expand rclauses #f) ) ) ) ) ) ) ) ) ) ) ) )
+                                   ,(l0 (cdr todo)))))
+                          )))))))))))
 
 (##sys#extend-macro-environment
  'let*