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*