aboutsummaryrefslogtreecommitdiffstats
path: root/mcgoron
diff options
context:
space:
mode:
authorGravatar Peter McGoron 2025-02-16 23:46:26 -0500
committerGravatar Peter McGoron 2025-02-16 23:46:26 -0500
commit99a7c14584dfd3e546740e3e86e25408c761f200 (patch)
tree3e348d4b394ae044f4001d6bd91d9d240c5758fb /mcgoron
parentset-disjoint tests (diff)
member, adjoin and find tests
Diffstat (limited to '')
-rw-r--r--mcgoron/weight-balanced-trees/srfi/113/sets.scm23
1 files changed, 12 insertions, 11 deletions
diff --git a/mcgoron/weight-balanced-trees/srfi/113/sets.scm b/mcgoron/weight-balanced-trees/srfi/113/sets.scm
index 768be10..20f01d9 100644
--- a/mcgoron/weight-balanced-trees/srfi/113/sets.scm
+++ b/mcgoron/weight-balanced-trees/srfi/113/sets.scm
@@ -64,8 +64,8 @@
(define (set-member set element default)
(search (set-element-comparator set)
- (get-node set)
element
+ (get-node set)
(lambda () default)))
;;; ;;;;;;;;;;;;;;;;;;;
@@ -118,7 +118,7 @@
((predicate set default-value transform)
(let loop ((queue (list (get-node set))))
(cond
- ((null? queue) default-value)
+ ((null? queue) (default-value))
((null? (car queue)) (loop (cdr queue)))
(else (with-node ((car queue) data ("<" left) (">" right))
(if (predicate data)
@@ -330,15 +330,16 @@
(define (set-adjoin-all set elements)
(let ((cmp (set-element-comparator set)))
- (fold (lambda (new set)
- (update cmp
- set
- new
- (lambda (old) old)
- (lambda ()
- (wb-tree-node new '() '()))))
- (get-node set)
- elements)))
+ (raw-set
+ cmp
+ (fold (lambda (new set)
+ (update cmp
+ set
+ new
+ (lambda (old) old)
+ (lambda () (wb-tree-node new '() '()))))
+ (get-node set)
+ elements))))
(define (set-replace-all set elements)
(let ((cmp (set-element-comparator set)))