diff options
author | Hugo Hörnquist <hugo@lysator.liu.se> | 2023-12-09 00:14:34 +0100 |
---|---|---|
committer | Hugo Hörnquist <hugo@lysator.liu.se> | 2023-12-09 00:59:16 +0100 |
commit | c6939d3bc658347f4ee1b1b687f91e9428a59b6d (patch) | |
tree | 512fc9382abe107540f9ab4a52872ca83aef43f4 /module/hnh | |
parent | Rename vcomponent in create module to vcomponent-create. (diff) | |
download | calp-c6939d3bc658347f4ee1b1b687f91e9428a59b6d.tar.gz calp-c6939d3bc658347f4ee1b1b687f91e9428a59b6d.tar.xz |
Rework namespaced sxml type. Still incomplete.
Diffstat (limited to 'module/hnh')
-rw-r--r-- | module/hnh/util/table.scm | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/module/hnh/util/table.scm b/module/hnh/util/table.scm index 67125c8d..94d3c110 100644 --- a/module/hnh/util/table.scm +++ b/module/hnh/util/table.scm @@ -16,6 +16,8 @@ (tree-remove . table-remove) (tree->list . table->list) (tree? . table?) + (tree-empty? . table-empty?) + (tree-equal? . table-equal?) (serialize-tree . serialize-table) (alist->tree . alist->table))) @@ -55,6 +57,14 @@ (or (tree-node? x) (tree-terminal? x))) +(define (tree-empty? x) + (tree-terminal? x)) + +(define (tree-equal? a b) + (or (and (tree-terminal? a) (tree-terminal? b)) + (tree-equal? (left a) (left b)) + (tree-equal? (right a) (right b)))) + ;;; A lens ;;; This function (tree-focus) ;;; returns a function (f), @@ -70,11 +80,11 @@ (cond ((tree-terminal? tree) ;; new node (tree-node key: k value: (op 'not-a-value))) ((eq? k (key tree)) ;; this node - (value tree (op (value truee)))) + (value tree (op (value tree)))) (else (if (symbol<? k (key tree)) (lens-compose left* (tree-focus (left tree) k)) - (lens-compose right* (tree-focus (right tree k)))))))) + (lens-compose right* (tree-focus (right tree) k))))))) (define (tree-put tree k v) (cond ((tree-terminal? tree) (tree-node key: k value: v)) |