diff --git a/doc/d-utils.md b/doc/d-utils.md index ebee6d4..d74dbec 100644 --- a/doc/d-utils.md +++ b/doc/d-utils.md @@ -584,3 +584,9 @@ Returns true if both BSTs contain the same keys and values. (import util-bst-bdict) Reimplementation of old number-only BST dictionary. + +## util-bst-ldict [module] + + (import util-bst-ldict) + +Reimplementation of old list-based symbol dictionary using new BST backend. diff --git a/src/Makefile b/src/Makefile index 0bbe0f6..b06d23b 100644 --- a/src/Makefile +++ b/src/Makefile @@ -56,7 +56,7 @@ HACKERBASE-OBJS=hackerbase.o testing.o listing.o cal-month.o \ util-utf8.o sgr-cell.o template-list-expander.o \ box-drawing.o util-list.o export-web-static.o util-dir.o \ dokuwiki.o racket-kwargs.o duck.o util-bst.o \ - util-bst-bdict.o + util-bst-bdict.o util-bst-ldict.o GENDOC-SOURCES=gendoc.scm duck-extract.import.scm \ util-time.import.scm util-csv.import.scm util-git.import.scm \ @@ -64,14 +64,15 @@ GENDOC-SOURCES=gendoc.scm duck-extract.import.scm \ util-parser.import.scm util-list.import.scm \ util-proc.import.scm util-format.import.scm \ util-tag.import.scm util-string.import.scm \ - util-bst.import.scm util-bst-bdict.import.scm + util-bst.import.scm util-bst-bdict.import.scm \ + util-bst-ldict.import.scm GENDOC-OBJS=gendoc.o duck-extract.o util-time.o util-csv.o util-io.o \ progress.o testing.o util-proc.o util-git.o util-io.o \ util-stdout.o util-parser.o util-list.o util-proc.o \ util-format.o racket-kwargs.o util-dict-list.o util-tag.o \ util-set-list.o duck.o util-string.o util-bst.o \ - util-bst-bdict.o + util-bst-bdict.o util-bst-ldict.o .PHONY: imports imports: $(HACKERBASE-DEPS) @@ -526,3 +527,9 @@ UTIL-BST-BDICT-SOURCES=util-bst-bdict.scm util-bst.import.scm \ util-bst-bdict.o: util-bst-bdict.import.scm util-bst-bdict.import.scm: $(UTIL-BST-BDICT-SOURCES) + +UTIL-BST-LDICT-SOURCES=util-bst-ldict.scm duck.import.scm \ + util-bst.import.scm util-proc.import.scm + +util-bst-ldict.o: util-bst-ldict.import.scm +util-bst-ldict.import.scm: $(UTIL-BST-LDICT-SOURCES) diff --git a/src/gendoc.scm b/src/gendoc.scm index fce88ff..77aa588 100644 --- a/src/gendoc.scm +++ b/src/gendoc.scm @@ -34,4 +34,5 @@ util-mail util-bst util-bst-bdict + util-bst-ldict ) diff --git a/src/util-bst-ldict.scm b/src/util-bst-ldict.scm index 46b3232..c891c49 100644 --- a/src/util-bst-ldict.scm +++ b/src/util-bst-ldict.scm @@ -5,12 +5,13 @@ (module* util-bst-ldict - #:doc ("xxx") + #:doc ("Reimplementation of old list-based symbol dictionary using new BST backend.") ( ) (import scheme - util-bst) + util-bst + util-proc) (define (symbolstring a) @@ -31,7 +32,7 @@ (define (ldict-map proc ld) (let ((i 0) (both? ((procedure-arity>=? 2) proc)) - (index? ((procedure-arity=>? 3) proc))) + (index? ((procedure-arity>=? 3) proc))) (bst-map-bst ld (lambda (k v) (let ((r (if both? @@ -48,4 +49,6 @@ (define (ldict-reduce init proc ld) (bst-reduce ld proc init)) + (define ldict-equal? bst-equal?) + ) diff --git a/src/util-bst.scm b/src/util-bst.scm index 13a7f9a..7a16475 100644 --- a/src/util-bst.scm +++ b/src/util-bst.scm @@ -429,9 +429,21 @@ arguments.") ("Returns true if both BSTs contain the same keys and values.") (if (bst-compat? b1 b2) (let-comparators - (EQ?