(display '(SECTION 4 2 6))
(display "\nNested QQ tests\n")
(define test (lambda args (write args) (newline)))
;(test '(a `(b ,(+ 1 2) ,(foo 4 d) e) f) 'quasiquote `(a `(b ,(+ 1 2) ,(foo ,(+ 1 3) d) e) f))
;(test '(a `(b ,x ,'y d) e) 'quasiquote (let ((name1 'x) (name2 'y)) `(a `(b ,,name1 ,',name2 d) e)))
(define (qqtest q1 q2)
(let ((a (lambda l (cons 'a l)))
(d 3) (e 4) (f 5) (x 23) (y 24))
(test (eval q1) 'nested-quasiquote (eval q2))))
(define foo cons)
(qqtest '(a `(b ,(+ 1 2) ,(foo 4 d) e) f)
`(a `(b ,(+ 1 2) ,(foo ,(+ 1 3) d) e) f))
(define foo +)
(qqtest '(a `(b ,(+ 1 2) ,(foo 4 d) e) f)
`(a `(b ,(+ 1 2) ,(foo ,(+ 1 3) d) e) f))
(qqtest '(a `(b ,x ,'y d) e)
(let ((name1 'x) (name2 'y)) `(a `(b ,,name1 ,',name2 d) e)))