summaryrefslogtreecommitdiffstats
path: root/dictionaries.scm
diff options
context:
space:
mode:
authorGravatar John Cowan 2020-10-19 00:16:32 -0400
committerGravatar GitHub 2020-10-19 00:16:32 -0400
commitb3e41bcd989e76efbb59d66002c31b342a5ccae4 (patch)
tree4cc36dce2842ade22116d37eff30f4f1afe0c7f4 /dictionaries.scm
parentMerge pull request #1 from arvyy/master (diff)
parentfix plist size proc; rewrite dict-entries to use fold (diff)
Merge pull request #2 from arvyy/master
Create library, rewrite tests against external api, add alist, plist and srfi69/125 implementation
Diffstat (limited to 'dictionaries.scm')
-rw-r--r--dictionaries.scm55
1 files changed, 55 insertions, 0 deletions
diff --git a/dictionaries.scm b/dictionaries.scm
new file mode 100644
index 0000000..1920f6f
--- /dev/null
+++ b/dictionaries.scm
@@ -0,0 +1,55 @@
+(define-library
+ (dictionaries)
+ (import (scheme base)
+ (scheme case-lambda)
+ (srfi 1))
+
+ (cond-expand
+ ((and srfi-69 (not srfi-125)) (import (srfi 69)))
+ (srfi-125 (import (srfi 125)))
+ (chibi (import (srfi 125)))
+ (kawa (import (srfi 69 basic-hash-tables))))
+
+ (export
+
+ ;; predicates
+ dictionary?
+ dict-empty?
+ dict-contains?
+
+ ;; lookup
+ dict-ref
+ dict-ref/default
+
+ ;; mutation
+ dict-set!
+ dict-adjoin!
+ dict-delete!
+ dict-delete-all!
+ dict-replace!
+ dict-intern!
+ dict-update!
+ dict-update/default!
+ dict-pop!
+ dict-map!
+ dict-filter!
+ dict-remove!
+ dict-search!
+
+ ;; whole dictionary
+ dict-size
+ dict-for-each
+ dict-count
+ dict-any
+ dict-every
+ dict-keys
+ dict-values
+ dict-entries
+ dict-fold
+ dict-map->list
+ dict->alist
+
+ ;; registering dictionary types
+ register-dictionary!)
+
+ (include "dictionaries-impl.scm"))