stx.rkt (635B)
1 #lang racket/base 2 3 (require (for-template racket/base) 4 (for-syntax racket/base) 5 "../stx/fold.rkt") 6 7 (provide make-rest-transformer 8 make-id+call-transformer 9 make-id+call-transformer-delayed) 10 11 (define (make-rest-transformer f) 12 (λ (stx) 13 (syntax-case stx () 14 [(_ . rest) (f #'rest)]))) 15 16 (define (make-id+call-transformer-delayed stx-value) 17 (λ (stx) 18 (syntax-case stx () 19 [(_ . args) (quasisyntax/top-loc stx (#,(stx-value) . args))] 20 [id (identifier? #'id) (stx-value)]))) 21 22 (define (make-id+call-transformer stx-value) 23 (make-id+call-transformer-delayed (λ () stx-value)))