fix r6rs quasisyntax

svn: r9150
This commit is contained in:
Matthew Flatt 2008-04-03 15:10:07 +00:00
parent f28726ab4d
commit fbac4e75fd
3 changed files with 7 additions and 5 deletions

View File

@ -7,7 +7,7 @@
(provide define-generalized-qq)
(define-syntax-rule (define-generalized-qq r6rs:quasiquote
quasiquote unquote unquote-splicing)
quasiquote unquote unquote-splicing uq-wrap)
(...
(define-syntax (r6rs:quasiquote stx)
;; Replace (unquote expr ...) with (unquote expr) ...
@ -23,7 +23,8 @@
(let ([new-rest (loop #'rest level)])
(if (zero? level)
(if (and (eq? new-rest #'rest)
(= 1 (length (syntax->list #'(expr ...)))))
(= 1 (length (syntax->list #'(expr ...))))
(free-identifier=? #'uq-wrap #'values))
tmpl
(datum->syntax
tmpl
@ -32,7 +33,8 @@
(datum->syntax
a
(list (car (syntax-e a))
expr)
(list (syntax uq-wrap)
expr))
a a a))
(syntax->list #'(expr ...))))
new-rest)

View File

@ -361,7 +361,7 @@
;; quasiquote generalization
(define-generalized-qq r6rs:quasiquote
r5rs:quasiquote unquote unquote-splicing)
r5rs:quasiquote unquote unquote-splicing values)
;; ----------------------------------------
;; let[*]-values

View File

@ -275,4 +275,4 @@
[(p ...) (let () e1 e2 ...)])]))
(define-generalized-qq r6rs:quasisyntax
quasisyntax unsyntax unyntaxquote-splicing)
quasisyntax unsyntax unsyntax-splicing convert-mpairs)