Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #lang racket/load
- (module st racket
- (define is-typed? (box #f))
- (define type-env (box 0))
- (provide is-typed? type-env))
- (module mac racket
- (require (for-syntax 'st))
- (define-syntax (m stx)
- (unless (> (unbox type-env) 0)
- (displayln ">> type-env is 0")
- (error 'fail))
- #'#t)
- (provide m))
- (module lang racket
- (require (for-syntax 'st))
- (provide (rename-out [mb #%module-begin])
- (except-out (all-from-out racket) #%module-begin))
- (define-syntax (mb stx)
- (displayln ">> in module-begin")
- (set-box! is-typed? #t)
- (syntax-case stx ()
- [(_ forms ...)
- #'(#%module-begin
- forms ...
- (begin-for-syntax
- (when (unbox is-typed?)
- (set-box! type-env 1))))])))
- (module A1 'lang
- (require (for-syntax 'st))
- (require 'mac)
- (module+ sub
- 0
- (m)))
- (require 'A1)
Add Comment
Please, Sign In to add comment