mirror of
https://github.com/ashinn/chibi-scheme.git
synced 2025-05-21 14:49:18 +02:00
fix for iset-prune! to return an empty iset instead of #f
This commit is contained in:
parent
100e5b7d1e
commit
ef4372a2cd
2 changed files with 13 additions and 10 deletions
|
@ -5,7 +5,7 @@
|
|||
(define char-set:upper-case (immutable-char-set (%make-iset 65 90 #f #f #f)))
|
||||
|
||||
;; char-set:title-case
|
||||
(define char-set:title-case (immutable-char-set #f))
|
||||
(define char-set:title-case (immutable-char-set (%make-iset 0 0 0 #f #f)))
|
||||
|
||||
;; char-set:letter
|
||||
(define char-set:letter (immutable-char-set (%make-iset 97 122 #f (%make-iset 65 90 #f #f #f) #f)))
|
||||
|
|
|
@ -133,24 +133,27 @@
|
|||
(sparse 0 '()))))))
|
||||
|
||||
;; Remove empty nodes.
|
||||
(define (iset-prune! iset)
|
||||
(define (%iset-prune! is)
|
||||
(cond
|
||||
((not iset)
|
||||
((not is)
|
||||
#f)
|
||||
(else
|
||||
(iset-left-set! iset (iset-prune! (iset-left iset)))
|
||||
(iset-right-set! iset (iset-prune! (iset-right iset)))
|
||||
(if (and (eq? 0 (iset-bits iset))
|
||||
(not (iset-left iset))
|
||||
(not (iset-right iset)))
|
||||
(iset-left-set! is (%iset-prune! (iset-left is)))
|
||||
(iset-right-set! is (%iset-prune! (iset-right is)))
|
||||
(if (and (eq? 0 (iset-bits is))
|
||||
(not (iset-left is))
|
||||
(not (iset-right is)))
|
||||
#f
|
||||
iset))))
|
||||
is))))
|
||||
|
||||
(define (iset-prune! is)
|
||||
(or (%iset-prune! is) (iset)))
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
(define (iset-optimize! is . opt)
|
||||
(let ((span (if (pair? opt) (car opt) (* 40 8)))
|
||||
(is (or (iset-prune! is) (iset))))
|
||||
(is (iset-prune! is)))
|
||||
(iset-for-each-node (lambda (node) (iset-optimize-node! node span)) is)
|
||||
(iset-prune! is)))
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue