From 82b7ec004dd00020e189b3ab959c06c6d351fb1b Mon Sep 17 00:00:00 2001 From: AlexKnauth Date: Mon, 21 Sep 2015 17:54:25 -0400 Subject: [PATCH] add version of make-variable-like-transformer --- tapl/stx-utils.rkt | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/tapl/stx-utils.rkt b/tapl/stx-utils.rkt index 7a6b1b6..d3061c3 100644 --- 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))]))) +