Thank you for your comment

Beau­tiful Racket / racket school 2019

  1. test.rkt
    (module dsl-mod-name dsl/expander
      dsl-sexprs ···)
    1
    2
    (module dsl-mod-name dsl/expander
      dsl-sexprs ···)
    
    copy to clipboard
  2. test.rkt
    (module dsl-mod-name dsl/expander
      dsl-sexprs ···)
    1
    2
    (module dsl-mod-name dsl/expander
      dsl-sexprs ···)
    
    copy to clipboard
    (module dsl-mod-name _
      (require dsl/expander)
      dsl-sexprs ···)
    1
    2
    3
    (module dsl-mod-name _
      (require dsl/expander)
      dsl-sexprs ···)
    
    copy to clipboard
  3. test.rkt
    (module dsl-mod-name dsl/expander
      dsl-sexprs ···)
    1
    2
    (module dsl-mod-name dsl/expander
      dsl-sexprs ···)
    
    copy to clipboard
    test.rkt
    (module dsl-mod-name dsl/expander
      (#%module-begin ;; imported from `dsl/expander`
        dsl-sexprs ···))
    1
    2
    3
    (module dsl-mod-name dsl/expander
      (#%module-begin ;; imported from `dsl/expander`
        dsl-sexprs ···))
    
    copy to clipboard
  4. dsl/expander.rkt
    #lang br/quicklang
    (define-macro (dsl-module-begin EXPR ...)
      #'(#%module-begin ;; from `br/quicklang`
         EXPR ...))
    (provide (rename-out [dsl-module-begin #%module-begin]))
    1
    2
    3
    4
    5
    #lang br/quicklang
    (define-macro (dsl-module-begin EXPR ...)
      #'(#%module-begin ;; from `br/quicklang`
         EXPR ...))
    (provide (rename-out [dsl-module-begin #%module-begin]))
    
    copy to clipboard
  5. #lang br
    (define-macro (mac THING)
      (println #'THING)
      #'(list THING THING))
    (mac (list "foo" 42))
    1
    2
    3
    4
    5
    #lang br
    (define-macro (mac THING)
      (println #'THING)
      #'(list THING THING))
    (mac (list "foo" 42))
    
    copy to clipboard
    #lang br
    (define-macro (mac THING)
      (println THING) ; error
      #'(list THING THING))
    (mac (list "foo" 42))
    1
    2
    3
    4
    5
    #lang br
    (define-macro (mac THING)
      (println THING) ; error
      #'(list THING THING))
    (mac (list "foo" 42))
    
    copy to clipboard
  6. #lang br
    (define-macro (mac2 (LEFT 42 RIGHT))
      #'(list LEFT RIGHT))
    (mac2 ("foo" 42 "bar"))
    1
    2
    3
    4
    #lang br
    (define-macro (mac2 (LEFT 42 RIGHT))
      #'(list LEFT RIGHT))
    (mac2 ("foo" 42 "bar"))
    
    copy to clipboard
  7. #lang br
    (define-macro (mac3 NUM ...)
      #'(begin (* NUM 100) ...))
    (mac3 10 42 325)
    1
    2
    3
    4
    #lang br
    (define-macro (mac3 NUM ...)
      #'(begin (* NUM 100) ...))
    (mac3 10 42 325)
    
    copy to clipboard
test.rkt
#lang s-exp expand-only

"hello world"
(+ 1 (* 2 (- x)))
1
2
3
4
#lang s-exp expand-only

"hello world"
(+ 1 (* 2 (- x)))
copy to clipboard
expand-only/main.rkt
#lang br

(define-macro (my-module-begin EXPR ...)
  #'(#%module-begin
     ···))
(provide (rename-out [my-module-begin #%module-begin]))
1
2
3
4
5
6
#lang br

(define-macro (my-module-begin EXPR ...)
  #'(#%module-begin
     ···))
(provide (rename-out [my-module-begin #%module-begin]))
copy to clipboard
← prev next →