Finish preliminary BST reimplementation.
This commit is contained in:
parent
19c40c18a6
commit
6999664aa1
1 changed files with 23 additions and 3 deletions
|
@ -29,8 +29,8 @@
|
|||
bst-find-pair
|
||||
bst-filter-pairs
|
||||
|
||||
;; bst-map-list
|
||||
;; bst-map-dict
|
||||
bst-map-list
|
||||
bst-map-dict
|
||||
|
||||
util-bst-tests!
|
||||
)
|
||||
|
@ -312,7 +312,27 @@
|
|||
(lambda (kv)
|
||||
(when (pred? (car kv) (cdr kv))
|
||||
(set! res (cons kv res)))))
|
||||
res))
|
||||
(reverse res)))
|
||||
|
||||
(define/doc (bst-map-list bst proc)
|
||||
("Returns arbitrary list created by mapping all elements.")
|
||||
(let ((res '()))
|
||||
(bst-iter-kv bst
|
||||
(lambda (kv)
|
||||
(set! res
|
||||
(cons res
|
||||
(proc (car kv) (cdr kv))))))
|
||||
(reverse res)))
|
||||
|
||||
(define/doc (bst-map-dict bst proc)
|
||||
("Returns a new dictionary with all values processed (keys are left intact).")
|
||||
(set-bst-root bst
|
||||
(let loop ((n (bst-root bst)))
|
||||
(if n
|
||||
(cons (cons (caar n) (proc (caar n) (cdar n)))
|
||||
(cons (loop (cadr n))
|
||||
(loop (cddr n))))
|
||||
#f))))
|
||||
|
||||
;; Module self-tests
|
||||
(define (util-bst-tests!)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue