38 lines
1.5 KiB
Racket
38 lines
1.5 KiB
Racket
#lang racket
|
|
|
|
(module m racket
|
|
(require macro-debugger/syntax-browser)
|
|
(define-syntax (m1 stx)
|
|
(syntax-case stx ()
|
|
[(_ sol (su sv) m2-id user-id i-user-id a f r aa ff rr)
|
|
(syntax-local-lift-expression
|
|
#`(browse-syntaxes
|
|
(list #'sol #'m2-id #'user-id #'i-user-id #'a #'f #'r #'aa #'ff #'rr)))
|
|
#`(cons (list (su) sv) #,(free-identifier=? #'m2-id #'sol))]))
|
|
|
|
(define-syntax (m2 stx)
|
|
(syntax-case stx ()
|
|
[(_ user-id val)
|
|
#`(begin
|
|
(define (foo) 1)
|
|
(m1
|
|
;#,((make-syntax-delta-introducer #'foo #'user-id) (syntax-local-introduce #'user-id) 'add)
|
|
#,((make-syntax-delta-introducer #'foo stx) (syntax-local-introduce #'user-id) 'add)
|
|
#,((make-syntax-delta-introducer #'foo stx) (syntax-local-introduce #'(user-id val)) 'add)
|
|
foo
|
|
user-id
|
|
#,(syntax-local-introduce #'user-id)
|
|
#,((make-syntax-delta-introducer #'foo #'user-id) #'user-id 'add)
|
|
#,((make-syntax-delta-introducer #'foo #'user-id) #'user-id 'flip)
|
|
#,((make-syntax-delta-introducer #'foo #'user-id) #'user-id 'remove)
|
|
#,((make-syntax-delta-introducer #'user-id #'foo) #'user-id 'add)
|
|
#,((make-syntax-delta-introducer #'user-id #'foo) #'user-id 'flip)
|
|
#,((make-syntax-delta-introducer #'user-id #'foo) #'user-id 'remove)))]))
|
|
|
|
(provide m2))(require 'm)
|
|
|
|
(let ((y 1))
|
|
(m2 foo y))
|
|
(let ((y 2))
|
|
(m2 foo y))
|