diff options
Diffstat (limited to '')
-rw-r--r-- | module/hnh/util/table.scm | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/module/hnh/util/table.scm b/module/hnh/util/table.scm index ebd5c8f7..23ce6cd4 100644 --- a/module/hnh/util/table.scm +++ b/module/hnh/util/table.scm @@ -24,14 +24,23 @@ (define-syntax-rule (symbol< args ...) (string< (symbol->string args) ...)) -(define-type (tree-node) +(define-type (tree-node + printer: (lambda (t p) + (write + `(-> (table) + ,@(fold (lambda (p done) + (cons `(table-put ,(car p) ,(cdr p)) + done)) + '() + (tree->list t))) + p))) (key type: symbol?) value (left type: tree? default: (tree-terminal)) (right type: tree? default: (tree-terminal))) ;; Type tagged null -(define-type (tree-terminal)) +(define-type (tree-terminal printer: (lambda (_ p) (write '(table) p)))) ;; Wrapped for better error messages (define (make-tree) (tree-terminal)) |