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 |