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