PasteRack.org
Paste # 3904
2014-07-24 18:53:29

Fork as a new paste.

Paste viewed 48 times.


Embed:

get-transformer-binding

  1. #lang racket
  2.  
  3. (define-syntax (foo stx) #'42)
  4.  
  5. (define (get-transformer-binding id)
  6.   (define out #f)
  7.   (define (store t) (set! out t))
  8.   (define ns (variable-reference->namespace (#%variable-reference)))
  9.   (eval `(let-syntax ([m (λ(x) (,store (syntax-local-value #'foo)) #'(void))]) (m)) ns)
  10.   out)
  11.  
  12. (define transformer (get-transformer-binding #'foo))
  13. transformer
  14. (transformer 1)

=>

#<procedure>

#<syntax 42>