Finding and filtering pairs.
This commit is contained in:
parent
901d2f7398
commit
19c40c18a6
1 changed files with 23 additions and 4 deletions
|
@ -26,8 +26,8 @@
|
|||
|
||||
bst-balance
|
||||
|
||||
;; bst-find-pair
|
||||
;; bst-filter-pairs
|
||||
bst-find-pair
|
||||
bst-filter-pairs
|
||||
|
||||
;; bst-map-list
|
||||
;; bst-map-dict
|
||||
|
@ -240,8 +240,8 @@
|
|||
("Returns all the keys contained in given dictionary.")
|
||||
(let ((res '()))
|
||||
(bst-iter-kv bst
|
||||
(lambda (k v)
|
||||
(set! res (cons k res))))
|
||||
(lambda (kv)
|
||||
(set! res (cons (car kv) res))))
|
||||
(reverse res)))
|
||||
|
||||
;; Converts BST to KVV
|
||||
|
@ -295,6 +295,25 @@
|
|||
(kvv->bst
|
||||
(bst->kvv bst)))
|
||||
|
||||
(define/doc (bst-find-pair bst pred?)
|
||||
("Finds pair by predicate that accepts both key and value.")
|
||||
(call/cc
|
||||
(lambda (cc)
|
||||
(bst-iter-kv bst
|
||||
(lambda (kv)
|
||||
(when (pred? (car kv) (cdr kv))
|
||||
(cc kv))))
|
||||
#f)))
|
||||
|
||||
(define/doc (bst-filter-pairs bst pred?)
|
||||
("Returns a list of key-value pairs matching predicate.")
|
||||
(let ((res '()))
|
||||
(bst-iter-kv bst
|
||||
(lambda (kv)
|
||||
(when (pred? (car kv) (cdr kv))
|
||||
(set! res (cons kv res)))))
|
||||
res))
|
||||
|
||||
;; Module self-tests
|
||||
(define (util-bst-tests!)
|
||||
(run-tests
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue