5 ; Importing srfi-67 did not actually make available symbol-compare. Boo!
7 (define (symbol<? a b) (string<? (symbol->string a) (symbol->string b)))
9 ; a BTree is a four-tuple of (name value left right) | ()
11 (define (btree-get key btree)
13 (() (abort "Key not found."))
17 (btree-get key (if (symbol<? key k) left right))))
18 (_ (abort "Not a BTree."))))
21 (define (btree-insert key value btree)
23 (() (list key value '() '()))
26 (list k value left right)
28 (list k v (btree-insert key value left) right)
29 (list k v left (btree-insert key value right)))))
30 (_ (abort "Not a BTree."))))
33 (set! T (btree-insert 'larry 23 T))
34 (set! T (btree-insert 'barry 18 T))
35 (set! T (btree-insert 'carry 99 T))
44 (balance0 el (halve (length el)))))
46 (define (balance0 el midpoint)
47 (receive (prefix suffix) (split-at el midpoint)
52 (balance (cdr suffix))))))
54 (define (halve n) (quotient n 2))
58 ;(define (btree-sorted-list items)
59 ; (btree-sorted-list0 items (length items)))
61 ;(define (btree-sorted-list items len)