Fix functional updates.

This commit is contained in:
Dominik Pantůček 2023-07-07 10:48:32 +02:00
parent 3f6c5cc36a
commit f3bcfcaa6a
2 changed files with 9 additions and 3 deletions

View file

@ -363,8 +363,14 @@
(values (set-bst-node-value n (proc (bst-node-value n)))
0)
(if (<? k nk)
(loop (bst-node-left n))
(loop (bst-node-right n)))))
(let-values (((new-left-node add-count)
(loop (bst-node-left n))))
(values (set-bst-node-left n new-left-node)
add-count))
(let-values (((new-right-node add-count)
(loop (bst-node-right n))))
(values (set-bst-node-right n new-right-node)
add-count)))))
(values (make-bst-node k (proc v)) 1)))))
(set-bst-root+count bst
new-root