fixing binding for ellipsis patterns with dotted tails

This commit is contained in:
Alex Shinn 2011-03-08 21:48:41 +09:00
parent 1831d33b26
commit 4722703d64

View file

@ -663,8 +663,10 @@
(,_i (,_- ,_len ,len)) (,_i (,_- ,_len ,len))
(,_res (,_quote ()))) (,_res (,_quote ())))
(,_if (,_>= 0 ,_i) (,_if (,_>= 0 ,_i)
,(lp `(,@(cdr (cdr p)) ,(car p) ,(car (cdr p))) ,(lp `(,(cddr p) (,(car p) ,(car (cdr p))))
`(,_append ,_ls (,_reverse ,_res)) `(,_cons ,_ls
(,_cons (,_reverse ,_res)
(,_quote ())))
dim dim
vars vars
k) k)
@ -739,7 +741,7 @@
(if (any (lambda (lit) (compare x lit)) lits) (if (any (lambda (lit) (compare x lit)) lits)
vars vars
(cons (cons x dim) vars))) (cons (cons x dim) vars)))
((ellipsis? x) (lp (car x) (+ dim 1) vars)) ((ellipsis? x) (lp (car x) (+ dim 1) (lp (cddr x) dim vars)))
((pair? x) (lp (car x) dim (lp (cdr x) dim vars))) ((pair? x) (lp (car x) dim (lp (cdr x) dim vars)))
((vector? x) (lp (vector->list x) dim vars)) ((vector? x) (lp (vector->list x) dim vars))
(else vars)))) (else vars))))