Prepare the new ldict implementation.
This commit is contained in:
parent
1d9edaa320
commit
fd927e3569
5 changed files with 38 additions and 9 deletions
|
@ -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.
|
||||
|
|
13
src/Makefile
13
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)
|
||||
|
|
|
@ -34,4 +34,5 @@
|
|||
util-mail
|
||||
util-bst
|
||||
util-bst-bdict
|
||||
util-bst-ldict
|
||||
)
|
||||
|
|
|
@ -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 (symbol<? a b)
|
||||
(string<? (symbol->string 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?)
|
||||
|
||||
)
|
||||
|
|
|
@ -429,9 +429,21 @@ arguments.")
|
|||
("Returns true if both BSTs contain the same keys and values.")
|
||||
(if (bst-compat? b1 b2)
|
||||
(let-comparators
|
||||
(EQ? <? b1)
|
||||
#t
|
||||
)
|
||||
(EQ? _ b1)
|
||||
(let ((g1 (bst-kv-iterator b1))
|
||||
(g2 (bst-kv-iterator b2)))
|
||||
(let loop ()
|
||||
(let ((kv1 (g1))
|
||||
(kv2 (g2)))
|
||||
(if (and (not kv1)
|
||||
(not kv2))
|
||||
#t
|
||||
(if (and (EQ? (car kv1)
|
||||
(car kv2))
|
||||
(equality? (cdr kv1)
|
||||
(cdr kv2)))
|
||||
(loop)
|
||||
#f))))))
|
||||
#f))
|
||||
|
||||
;; Module self-tests
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue