Thank you for your comment

Beau­tiful Racket / explainers

  1. (syntax->datum #'foo) ; 'foo
    (syntax->datum #'(+ 1 2 3)) ; '(+ 1 2 3)
    1
    2
    (syntax->datum #'foo) ; 'foo
    (syntax->datum #'(+ 1 2 3)) ; '(+ 1 2 3)
    
    copy to clipboard
  2. (define stx #'foo)
    (syntax-line stx) ; 2
    (syntax-column stx) ; 14
    (syntax-span stx) ; 3
    (syntax-srcloc stx) ; (srcloc 'unsaved-editor 2 14 24 3)
    1
    2
    3
    4
    5
    (define stx #'foo)
    (syntax-line stx) ; 2
    (syntax-column stx) ; 14
    (syntax-span stx) ; 3
    (syntax-srcloc stx) ; (srcloc 'unsaved-editor 2 14 24 3)
    
    copy to clipboard
  1. (define stx #'foo)
    (define stx+prop (syntax-property stx 'hello "world"))
    (syntax? stx+prop) ; #t
    (syntax-property stx+prop 'hello) ; "world"
    1
    2
    3
    4
    (define stx #'foo)
    (define stx+prop (syntax-property stx 'hello "world"))
    (syntax? stx+prop) ; #t
    (syntax-property stx+prop 'hello) ; "world"
    
    copy to clipboard
  2. (define-macro (nonplussed OUTER-OP)
      #'(begin
          (define + -)
          (list (+ 21 21) (OUTER-OP 21 21))))
    (syntax->datum (expand-once #'(nonplussed +)))
    ; '(begin (define + -) (list (+ 21 21) (+ 21 21)))
    (nonplussed +) ; '(0 42)
    1
    2
    3
    4
    5
    6
    7
    (define-macro (nonplussed OUTER-OP)
      #'(begin
          (define + -)
          (list (+ 21 21) (OUTER-OP 21 21))))
    (syntax->datum (expand-once #'(nonplussed +)))
    ; '(begin (define + -) (list (+ 21 21) (+ 21 21)))
    (nonplussed +) ; '(0 42)
    
    copy to clipboard
← prev next →