www

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

tmpl-multiassoc-syntax.rkt (913B)


      1 #lang typed/racket
      2 (require "typed-untyped.rkt")
      3 (define-typed/untyped-modules #:no-test
      4   (provide tmpl-cdr-assoc-syntax
      5            (rename-out [tmpl-cdr-assoc-syntax !cdr-assoc]))
      6   
      7   (module m-tmpl-cdr-assoc-syntax racket
      8     (provide tmpl-cdr-assoc-syntax)
      9     
     10     (require syntax/parse
     11              syntax/parse/experimental/template
     12              (submod "stx.rkt" untyped)
     13              (submod "multiassoc-syntax.rkt" untyped)
     14              phc-toolkit/untyped/aliases)
     15     
     16     (define-template-metafunction (tmpl-cdr-assoc-syntax stx)
     17       (syntax-parse stx
     18         [(_ (~optional (~seq #:default default)) query [k . v] …)
     19          (if (attribute default)
     20              (let ([r (assoc-syntax #'query #'([k . v] …))])
     21                (if r
     22                    (stx-cdr r)
     23                    #'default))
     24              (cdr-assoc-syntax #'query #'([k . v] …)))])))
     25   (require 'm-tmpl-cdr-assoc-syntax))