From 5552630953512bd1520e8f9b2429ea7b5f037b83 Mon Sep 17 00:00:00 2001 From: Eli Barzilay Date: Sat, 15 Apr 2006 17:33:54 +0000 Subject: [PATCH] make no meta-keywords case faster svn: r2675 --- collects/mzlib/kw.ss | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/collects/mzlib/kw.ss b/collects/mzlib/kw.ss index 1a0480abd2..70c62a1aa0 100644 --- a/collects/mzlib/kw.ss +++ b/collects/mzlib/kw.ss @@ -410,7 +410,17 @@ (syntax/loc stx (lambda vars (let* ([optvar optexpr] ...) body))))])) (syntax-case stx () [(_ formals expr0 expr ...) - (generate-body #'formals #'(let () expr0 expr ...))])) + ;; check if there are only identifiers, and save the whole mess if so + (if (let loop ([xs #'formals]) + (cond [(syntax? xs) (loop (syntax-e xs))] + [(symbol? xs) #t] + [(null? xs) #t] + [(not (pair? xs)) #f] + [(symbol? (if (syntax? (car xs)) (syntax-e (car xs)) (car xs))) + (loop (cdr xs))] + [else #f])) + #'(lambda formals expr0 expr ...) + (generate-body #'formals #'(let () expr0 expr ...)))])) (provide define/kw) (define-syntax (define/kw stx)