Associative array/Creation: Difference between revisions

Content added Content deleted
Line 4,322: Line 4,322:
(import (scheme process-context))
(import (scheme process-context))
(import (scheme write))
(import (scheme write))

(cond-expand
(chicken
(import (only (chicken base) define-record-printer))
(import (only (chicken format) format))) ; For debugging.
(else))


(begin
(begin
Line 4,344: Line 4,338:
(left %left)
(left %left)
(right %right))
(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)
(define (avl)
Line 4,401: Line 4,380:
(values #f #f)
(values #f #f)
(search tree)))
(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)
(define (avl-insert pred<? tree key data)
Line 4,594: Line 4,560:
(chicken (import (only (srfi 1) alist-delete)))
(chicken (import (only (srfi 1) alist-delete)))
;; Insert whatever you need here for your Scheme.
;; 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))
(else))


Line 4,611: Line 4,571:
(default %default)
(default %default)
(table %table))
(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
(define assoc-array