www

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | Submodules | README | LICENSE

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)))