www

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

scoped-transformers.rkt (627B)


      1 #lang racket
      2 
      3 (require  racket/match
      4           lens)
      5 
      6 (provide with-scoped-pre-transformer
      7          with-scoped-pre-transformers)
      8 
      9 (define ((with-scoped-pre-transformer transformer stx-lens pre-transformer) stx)
     10   (transformer (lens-transform stx-lens stx pre-transformer)))
     11 
     12 (define (with-scoped-pre-transformers transformer pre-transformer-lens-pairs)
     13   (match pre-transformer-lens-pairs
     14     ['() transformer]
     15     [(list (list stx-lens pre-transformer) rest ...)
     16      (define next-transformer
     17        (with-scoped-pre-transformer transformer stx-lens transformer))
     18      (with-scoped-pre-transformers next-transformer rest)]))