From 210cb5affe8e25fb0096898a42e18aafb9590d19 Mon Sep 17 00:00:00 2001 From: Matthew Flatt Date: Thu, 14 Sep 2006 00:37:12 +0000 Subject: [PATCH] ... notation for continuing benchmarks svn: r4330 --- .../mzscheme/benchmarks/common/cmdline.ss | 60 +++++++++++-------- 1 file changed, 36 insertions(+), 24 deletions(-) diff --git a/collects/tests/mzscheme/benchmarks/common/cmdline.ss b/collects/tests/mzscheme/benchmarks/common/cmdline.ss index 8f549d31b3..4281717d50 100644 --- a/collects/tests/mzscheme/benchmarks/common/cmdline.ss +++ b/collects/tests/mzscheme/benchmarks/common/cmdline.ss @@ -64,30 +64,42 @@ ;; Process arguments ------------------------------ - (for-each (lambda (arg) - (let ([s (string->symbol arg)]) - (cond - [(memq s implementations) - (set! run-implementations - (append (or run-implementations null) - (list s)))] - [(assq s no-implementations) - => (lambda (a) - (set! run-implementations - (remq (cdr a) - (or run-implementations default-implementations))))] - [(memq s benchmarks) - (set! run-benchmarks - (append (or run-benchmarks null) - (list s)))] - [(assq s no-benchmarks) - => (lambda (a) - (set! run-benchmarks - (remq (cdr a) - (or run-benchmarks default-benchmarks))))] - [else - (error 'auto "mysterious argument: ~a" arg)]))) - args) + (let loop ([args args]) + (unless (null? args) + (let ([arg (car args)]) + (let ([s (string->symbol arg)]) + (cond + [(memq s implementations) + (set! run-implementations + (append (or run-implementations null) + (list s))) + (loop (cdr args))] + [(assq s no-implementations) + => (lambda (a) + (set! run-implementations + (remq (cdr a) + (or run-implementations default-implementations))) + (loop (cdr args)))] + [(memq s benchmarks) + => + (lambda (l) + (let* ([...? (and (pair? (cdr args)) + (equal? (cadr args) "..."))] + [new (if ...? + l + (list s))]) + (set! run-benchmarks + (append (or run-benchmarks null) + new)) + (loop ((if ...? cddr cdr) args))))] + [(assq s no-benchmarks) + => (lambda (a) + (set! run-benchmarks + (remq (cdr a) + (or run-benchmarks default-benchmarks))) + (loop (cdr args)))] + [else + (error 'auto "mysterious argument: ~a" arg)]))))) (values (or run-benchmarks benchmarks)