Avoid lumping together output values as (output '(x y z)), use

separate output expressions instead.

svn: r14015
This commit is contained in:
Eli Barzilay 2009-03-08 21:10:07 +00:00
parent fe618071dc
commit 8b5b6a53d9

View File

@ -78,14 +78,16 @@
(define post? (not (null? (syntax-e #'(post ...))))) (define post? (not (null? (syntax-e #'(post ...)))))
(define (wrap expr) (define (wrap expr)
(if (or pre? post?) (if (or pre? post?)
#`(begin #,@(if pre? #'((decor '(pre ...))) #'()) #`(begin #,@(if pre? #'((decor 'pre) ...) #'())
#,expr #,expr
#,@(if post? #'((decor '(post ...))) #'())) #,@(if post? #'((decor 'post) ...) #'()))
expr)) expr))
(cond [(begin?->list expr*) (cond [(begin?->list expr*)
=> (lambda (xs) => (lambda (xs)
(if (null? xs) (if (null? xs)
(if (or pre? post?) #'(decor '(pre ... post ...)) expr*) (if (or pre? post?)
#'(begin (decor 'pre) ... (decor 'post) ...)
expr*)
#`(process-begin/text begin decor #`(process-begin/text begin decor
pre ... #,@xs post ...)))] pre ... #,@xs post ...)))]
[(definition? expr*) expr*] ; dump pre/post [(definition? expr*) expr*] ; dump pre/post