Guest User

Untitled

a guest
Nov 18th, 2018
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.87 KB | None | 0 0
  1. #lang racket/load
  2.  
  3. (module st racket
  4. (define is-typed? (box #f))
  5. (define type-env (box 0))
  6. (provide is-typed? type-env))
  7.  
  8. (module mac racket
  9. (require (for-syntax 'st))
  10. (define-syntax (m stx)
  11. (unless (> (unbox type-env) 0)
  12. (displayln ">> type-env is 0")
  13. (error 'fail))
  14. #'#t)
  15. (provide m))
  16.  
  17. (module lang racket
  18. (require (for-syntax 'st))
  19. (provide (rename-out [mb #%module-begin])
  20. (except-out (all-from-out racket) #%module-begin))
  21. (define-syntax (mb stx)
  22. (displayln ">> in module-begin")
  23. (set-box! is-typed? #t)
  24. (syntax-case stx ()
  25. [(_ forms ...)
  26. #'(#%module-begin
  27. forms ...
  28. (begin-for-syntax
  29. (when (unbox is-typed?)
  30. (set-box! type-env 1))))])))
  31.  
  32. (module A1 'lang
  33. (require (for-syntax 'st))
  34. (require 'mac)
  35. (module+ sub
  36. 0
  37. (m)))
  38.  
  39. (require 'A1)
Add Comment
Please, Sign In to add comment