need to quote literals in syntax-rules

This commit is contained in:
Alex Shinn 2009-04-04 00:02:02 +09:00
parent 78de2d1394
commit 3f98dd5035

View file

@ -36,7 +36,7 @@
_let (list (list v x)) _let (list (list v x))
(cond (cond
((symbol? p) ((symbol? p)
(if (memq p lits) (if (memq p (list _quote lits))
(list _and (list _eq? v p) (k vars)) (list _and (list _eq? v p) (k vars))
(list _let (list (list p v)) (k (cons (cons p dim) vars))))) (list _let (list (list p v)) (k (cons (cons p dim) vars)))))
((ellipse? p) ((ellipse? p)
@ -104,7 +104,9 @@
(cdr x))) (cdr x)))
(define (all-vars x dim) (define (all-vars x dim)
(let lp ((x x) (dim dim) (vars '())) (let lp ((x x) (dim dim) (vars '()))
(cond ((symbol? x) (if (memq x lits) vars (cons (cons x dim) vars))) (cond ((symbol? x) (if (memq x (list _quote lits))
vars
(cons (cons x dim) vars)))
((ellipse? x) (lp (car x) (+ dim 1) vars)) ((ellipse? x) (lp (car x) (+ dim 1) 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))