~ chicken-core (chicken-5) 8d409f9d88243e94467bdf1e3b1a22310bf8a475
commit 8d409f9d88243e94467bdf1e3b1a22310bf8a475 Author: Peter Bex <peter.bex@xs4all.nl> AuthorDate: Sun Sep 16 20:11:06 2012 +0200 Commit: felix <felix@call-with-current-continuation.org> CommitDate: Tue Sep 18 23:02:55 2012 +0200 Irregex: Convert strings with charset ranges into large SRE ranges instead of alternation of several ranges, producing smaller NFAs. (upstream changeset e8822a0dbf06) Signed-off-by: felix <felix@call-with-current-continuation.org> diff --git a/irregex-core.scm b/irregex-core.scm index e0fc2109..18bb50a6 100644 --- a/irregex-core.scm +++ b/irregex-core.scm @@ -3656,9 +3656,10 @@ (%irregex-error "not a valid sre char-set" sre))))))) (define (cset->sre cset) - (sre-alternate - (map (lambda (x) (list '/ (car x) (cdr x))) - (vector->list cset)))) + (cons '/ + (fold (lambda (x res) (cons (car x) (cons (cdr x) res))) + '() + (vector->list cset)))) (define (cset-contains? cset ch) (let ((len (vector-length cset)))Trap