From b702ac3edd86c3dc09a457ead38fefd703a4f1b2 Mon Sep 17 00:00:00 2001 From: Eli Barzilay Date: Sat, 9 Oct 2004 21:29:30 +0000 Subject: [PATCH] extended hash-table to accept flags original commit: 0963e8c203a548ba12f0af88bf1e7a5f1a498944 --- collects/mzlib/etc.ss | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/collects/mzlib/etc.ss b/collects/mzlib/etc.ss index 64fecc9..e583d71 100644 --- a/collects/mzlib/etc.ss +++ b/collects/mzlib/etc.ss @@ -496,14 +496,19 @@ (syntax/loc stx (define-syntaxes (id ...) (finish-syntax-set orig-stx)))))])) - + (define-syntax (hash-table stx) - (syntax-case stx () - [(_ (key value) ...) - (syntax/loc stx - (let ([ht (make-hash-table)]) - (hash-table-put! ht key value) ... - ht))])) + (syntax-case stx (quote) + [(_ x ...) + (let loop ([xs #'(x ...)] [flags '()]) + (syntax-case xs (quote) + [('flag x ...) (loop #'(x ...) (cons #''flag flags))] + [([key val] ...) + (with-syntax ([(flag ...) (reverse flags)]) + (syntax/loc stx + (let ([ht (make-hash-table flag ...)]) + (hash-table-put! ht key val) ... + ht)))]))])) (define-syntax (begin-with-definitions stx) ;; Body can have mixed exprs and defns. Wrap expressions with