commit 82b7ec004dd00020e189b3ab959c06c6d351fb1b parent 0d43fd4683b9f573b2cefb46c505d7a41797138c Author: AlexKnauth <alexander@knauth.org> Date: Mon, 21 Sep 2015 17:54:25 -0400 add version of make-variable-like-transformer Diffstat:
| M | tapl/stx-utils.rkt | | | 18 | ++++++++++++++++-- |
1 file changed, 16 insertions(+), 2 deletions(-)
diff --git a/tapl/stx-utils.rkt b/tapl/stx-utils.rkt @@ -47,4 +47,19 @@ (define (stx-append stx1 stx2) (append (if (syntax? stx1) (syntax->list stx1) stx1) - (if (syntax? stx2) (syntax->list stx2) stx2))) -\ No newline at end of file + (if (syntax? stx2) (syntax->list stx2) stx2))) + +;; based on make-variable-like-transformer from syntax/transformer, +;; but using (#%app id ...) instead of ((#%expression id) ...) +(define (make-variable-like-transformer ref-stx) + (unless (syntax? ref-stx) + (raise-type-error 'make-variable-like-transformer "syntax?" ref-stx)) + (lambda (stx) + (syntax-case stx () + [id + (identifier? #'id) + ref-stx] + [(id . args) + (let ([stx* (list* '#%app #'id (cdr (syntax-e stx)))]) + (datum->syntax stx stx* stx))]))) +