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-find-pair
|
||||||
bst-filter-pairs
|
bst-filter-pairs
|
||||||
|
|
||||||
;; bst-map-list
|
bst-map-list
|
||||||
;; bst-map-dict
|
bst-map-dict
|
||||||
|
|
||||||
util-bst-tests!
|
util-bst-tests!
|
||||||
)
|
)
|
||||||
|
@ -312,7 +312,27 @@
|
||||||
(lambda (kv)
|
(lambda (kv)
|
||||||
(when (pred? (car kv) (cdr kv))
|
(when (pred? (car kv) (cdr kv))
|
||||||
(set! res (cons kv res)))))
|
(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
|
;; Module self-tests
|
||||||
(define (util-bst-tests!)
|
(define (util-bst-tests!)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue