~ 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