~ chicken-core (chicken-5) 0eb872444b61717c542deb45e1e181a988acc749
commit 0eb872444b61717c542deb45e1e181a988acc749 Author: Peter Bex <peter.bex@xs4all.nl> AuthorDate: Sat Feb 19 17:20:13 2011 +0100 Commit: Peter Bex <peter.bex@xs4all.nl> CommitDate: Sat Feb 19 17:20:13 2011 +0100 Fix syntax-rules expansion problem introduced in the patch for #379, which got exposed in #511 diff --git a/library.scm b/library.scm index 31c8b375..f4019d88 100644 --- a/library.scm +++ b/library.scm @@ -4487,6 +4487,7 @@ EOF (define ##sys#list->vector list->vector) (define ##sys#list list) +(define ##sys#length length) (define ##sys#cons cons) (define ##sys#append append) (define ##sys#vector vector) diff --git a/synrules.scm b/synrules.scm index 32f09fbb..37515c7d 100644 --- a/synrules.scm +++ b/synrules.scm @@ -65,18 +65,15 @@ (define %and (r 'and)) (define %car '##sys#car) (define %cdr '##sys#cdr) - (define %length (r 'length)) + (define %length '##sys#length) (define %vector? '##sys#vector?) (define %vector-length '##sys#vector-length) (define %vector-ref '##sys#vector-ref) (define %vector->list '##sys#vector->list) (define %list->vector '##sys#list->vector) (define %>= '##sys#>=) - (define %> (r '>)) (define %= '##sys#=) (define %+ '##sys#+) - (define %- '-) - (define %i (r 'i)) (define %compare (r 'compare)) (define %cond (r 'cond)) (define %cons '##sys#cons) @@ -90,7 +87,6 @@ (define %let (r 'let)) (define %let* (r 'let*)) (define %list? '##sys#list?) - (define %list (r 'list)) (define %loop (r 'loop)) (define %map1 '##sys#map) (define %map '##sys#map-n) @@ -165,7 +161,7 @@ ,@(process-match %l (cddr pattern) #t)) (,%else (,%and ,@conjuncts - (,%loop (,%cdr ,%l) (,%- ,%len 1)))))))))))) + (,%loop (,%cdr ,%l) (,%+ ,%len -1)))))))))))) ;; Generate code to take apart the input expression ;; This is pretty bad, but it seems to work (can't say why).Trap