Associative array/Creation: Difference between revisions

Line 4,322:
(import (scheme process-context))
(import (scheme write))
 
(cond-expand
(chicken
(import (only (chicken base) define-record-printer))
(import (only (chicken format) format))) ; For debugging.
(else))
 
(begin
Line 4,344 ⟶ 4,338:
(left %left)
(right %right))
 
(cond-expand
(chicken (define-record-printer (<avl> rt out)
(display "#<avl " out)
(display (%key rt) out)
(display " " out)
(display (%data rt) out)
(display " " out)
(display (%bal rt) out)
(display " " out)
(display (%left rt) out)
(display " " out)
(display (%right rt) out)
(display ">" out)))
(else))
 
(define (avl)
Line 4,401 ⟶ 4,380:
(values #f #f)
(search tree)))
 
(define (alist->avl pred<? alst)
;; Go from association list to AVL tree.
(avl-check-usage
(procedure? pred<?)
"alist->avl expects a procedure as first argument")
(let loop ((tree (avl))
(lst alst))
(if (null? lst)
tree
(let ((head (car lst)))
(loop (avl-insert pred<? tree (car head) (cdr head))
(cdr lst))))))
 
(define (avl-insert pred<? tree key data)
Line 4,594 ⟶ 4,560:
(chicken (import (only (srfi 1) alist-delete)))
;; Insert whatever you need here for your Scheme.
(else))
 
(cond-expand
(chicken
(import (only (chicken base) define-record-printer))
(import (only (chicken format) format))) ; For debugging.
(else))
 
Line 4,611 ⟶ 4,571:
(default %default)
(table %table))
 
(cond-expand
(chicken (define-record-printer (<assoc-array> rt out)
(display "#<assoc-array " out)
(display (%hashfunc rt) out)
(display " " out)
(display (%pred=? rt) out)
(display " " out)
(display (%default rt) out)
(display " " out)
(display (%table rt) out)
(display ">" out)))
(else))
 
(define assoc-array
1,448

edits