... notation for continuing benchmarks

svn: r4330
This commit is contained in:
Matthew Flatt 2006-09-14 00:37:12 +00:00
parent 08f06adfc2
commit 210cb5affe

View File

@ -64,30 +64,42 @@
;; Process arguments ------------------------------
(for-each (lambda (arg)
(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)))]
(list s)))
(loop (cdr args))]
[(assq s no-implementations)
=> (lambda (a)
(set! run-implementations
(remq (cdr a)
(or run-implementations default-implementations))))]
(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)
(list s)))]
new))
(loop ((if ...? cddr cdr) args))))]
[(assq s no-benchmarks)
=> (lambda (a)
(set! run-benchmarks
(remq (cdr a)
(or run-benchmarks default-benchmarks))))]
(or run-benchmarks default-benchmarks)))
(loop (cdr args)))]
[else
(error 'auto "mysterious argument: ~a" arg)])))
args)
(error 'auto "mysterious argument: ~a" arg)])))))
(values (or run-benchmarks
benchmarks)