PasteRack.org
Paste # 30432
2014-07-30 14:19:16

Fork as a new paste.

Paste viewed 56 times.


Embed:

syntax-shift-phase-level

  1. #lang racket
  2.  
  3. (current-namespace (variable-reference->namespace (#%variable-reference)))
  4.  
  5.                   (namespace-set-variable-value! 'x 0)
  6. (begin-for-syntax (namespace-set-variable-value! 'x 1))
  7.  
  8.                   (displayln (list "phase 0: " (namespace-variable-value 'x)))
  9. (begin-for-syntax (displayln (list "phase 1: " (namespace-variable-value 'x))))
  10.  
  11. (eval #'x)
  12. (eval (syntax-shift-phase-level #'x  1))
  13. (eval (syntax-shift-phase-level #'x -1))
  14.  

=>

(phase 1:  1)

(phase 1:  1)

(phase 0:  0)

0

0

0