~ chicken-core (chicken-5) 26e69a72a9ee989e4136405d6480a424a25f4d14
commit 26e69a72a9ee989e4136405d6480a424a25f4d14 Author: felix <felix@call-with-current-continuation.org> AuthorDate: Mon Mar 14 07:35:23 2011 +0100 Commit: felix <felix@call-with-current-continuation.org> CommitDate: Mon Mar 14 07:35:23 2011 +0100 qq-simplification didn't recurse into uses of ##sys#cons diff --git a/expand.scm b/expand.scm index 8efd4460..03d5c91d 100644 --- a/expand.scm +++ b/expand.scm @@ -1407,16 +1407,20 @@ `(##sys#cons ,(walk head n) ,(walk tail n)) ) ) ) ) ) ) (define (simplify x) (cond ((match-expression x '(##sys#cons a '()) '(a)) - => (lambda (env) (simplify `(##sys#list ,(##sys#slot (assq 'a env) 1)))) ) + => (lambda (env) (simplify `(##sys#list ,(cdr (assq 'a env))))) ) ((match-expression x '(##sys#cons a (##sys#list . b)) '(a b)) => (lambda (env) (let ([bxs (assq 'b env)]) (if (fx< (length bxs) 32) - (simplify `(##sys#list ,(##sys#slot (assq 'a env) 1) - ,@(cdr bxs) ) ) + (simplify `(##sys#list ,(cdr(assq 'a env)) ,@(cdr bxs) ) ) x) ) ) ) + ((match-expression x '(##sys#cons a b) '(a b)) + => (lambda (env) + `(##sys#cons + (simplify (cdr (assq 'a env))) + (simplify (cdr (assq 'b env)))))) ((match-expression x '(##sys#append a '()) '(a)) - => (lambda (env) (##sys#slot (assq 'a env) 1)) ) + => (lambda (env) (cdr (assq 'a env))) ) (else x) ) ) (##sys#check-syntax 'quasiquote form '(_ _)) (walk (cadr form) 0) ) ) ) ) diff --git a/library.scm b/library.scm index 2c64448b..386fcd8d 100644 --- a/library.scm +++ b/library.scm @@ -3920,7 +3920,9 @@ EOF (define (make-composite-condition c1 . conds) (let ([conds (cons c1 conds)]) - (for-each (lambda (c) (##sys#check-structure c 'condition 'make-composite-condition)) conds) + (for-each + (lambda (c) (##sys#check-structure c 'condition 'make-composite-condition)) + conds) (##sys#make-structure 'condition (apply ##sys#append (map (lambda (c) (##sys#slot c 1)) conds))Trap