1 Scapegoat Trees
(require scapegoat-tree) | package: scapegoat-tree |
1.1 Introduction
This module provides a dictionary type implemented using scapegoat trees.
A scapegoat tree implements the gen:dict and gen:ordered-dict interfaces. Trees are immutable; side-effect versions of functions update the pointer to the root of the tree as a convienence.
1.2 Dictionary Interface
In addition to the dict? and ordered-dict? APIs, scapegoat trees support the following functions.
1.2.1 Parameters
parameter
(scapegoat-tree-height-factor) → (and/c (>/c 0.5) (</c 1))
(scapegoat-tree-height-factor factor) → void? factor : (and/c (>/c 0.5) (</c 1))
= 2/3
parameter
(scapegoat-tree-rebalance-on-copy rebalance?) → void? rebalance? : boolean?
= #t
1.2.2 Predicates
procedure
(scapegoat-tree? obj) → boolean?
obj : any/c
procedure
(scapegoat-tree-iterator? obj) → boolean?
obj : any/c
1.2.3 Constructors
procedure
(make-scapegoat-tree [ order #:key-contract key-contract #:value-contract value-contract]) → scapegoat-tree? order : order? = datum-order key-contract : contract? = any/c value-contract : contract? = any/c
procedure
s : scapegoat-tree?
procedure
s : scapegoat-tree?
1.2.4 Queries
procedure
(scapegoat-tree-order s) → order?
s : scapegoat-tree?
procedure
s : scapegoat-tree?
procedure
s : scapegoat-tree?
procedure
s : scapegoat-tree?
procedure
s : scapegoat-tree?
procedure
(scapegoat-tree-ref s key [default]) → any
s : scapegoat-tree? key : any/c
default : any/c = (lambda () (error "key not found\n key: " key))
1.2.4.1 Iterators
procedure
→ (or/c scapegoat-tree-iterator? #f) s : scapegoat-tree?
Returns #f if the tree is empty.
procedure
→ (or/c scapegoat-tree-iterator? #f) s : scapegoat-tree? i : scapegoat-tree-iterator?
procedure
(scapegoat-tree-iterate-key s i) → any
s : scapegoat-tree? i : scapegoat-tree-iterator?
procedure
(scapegoat-tree-iterate-value s i) → any
s : scapegoat-tree? i : scapegoat-tree-iterator?
procedure
(scapegoat-tree-iterator->list s i) → list?
s : scapegoat-tree? i : scapegoat-tree-iterator?
procedure
s : scapegoat-tree? i : scapegoat-tree-iterator?
procedure
s : scapegoat-tree? i : scapegoat-tree-iterator?
1.2.5 Mutators
procedure
(scapegoat-tree-set s key value) → scapegoat-tree?
s : scapegoat-tree? key : any/c value : any/c
procedure
(scapegoat-tree-set! s key value) → any
s : scapegoat-tree? key : any/c value : any/c
procedure
(scapegoat-tree-delete s key) → scapegoat-tree?
s : scapegoat-tree? key : any/c
procedure
(scapegoat-tree-delete! s key) → any
s : scapegoat-tree? key : any/c