sorted-map entries are real map-entries (jolt-jk23)
sorted-map seq/first/entries built plain [k v] vectors, so map-entry? was false and key/val threw. Build them via a new jolt.host/map-entry seam (entry-flagged pvec), matching a regular map's entries. Re-minted.
This commit is contained in:
parent
9ca30a236d
commit
76f8274603
3 changed files with 353 additions and 348 deletions
|
|
@ -44,6 +44,9 @@
|
|||
(def-var! "jolt.host" "tagged-table" jolt-tagged-table)
|
||||
(def-var! "jolt.host" "ref-put!" jolt-ref-put!)
|
||||
(def-var! "jolt.host" "ref-get" jolt-ref-get)
|
||||
;; map-entry constructor: a 2-elem entry-flagged pvec (map-entry? true, vector?
|
||||
;; false), so sorted-map seq/first produce real map entries that key/val accept.
|
||||
(def-var! "jolt.host" "map-entry" make-map-entry)
|
||||
|
||||
;; --- sorted-coll recognition + ops access ------------------------------------
|
||||
(define kw-jtype (keyword "jolt" "type"))
|
||||
|
|
|
|||
File diff suppressed because one or more lines are too long
|
|
@ -221,7 +221,9 @@
|
|||
(tree-collect (sfield sc :tree) proj []))
|
||||
|
||||
;; --- sorted-map ops ---------------------------------------------------------
|
||||
(defn- map-entry [t] [(nd-key t) (nd-val t)])
|
||||
;; a real map-entry (map-entry? true), so key/val/seq destructuring work like a
|
||||
;; regular map's entries.
|
||||
(defn- map-entry [t] (jolt.host/map-entry (nd-key t) (nd-val t)))
|
||||
|
||||
(defn- sm-get [sm k not-found]
|
||||
(let [n (tree-lookup (sfield sm :tree) (the-cmp sm) k)]
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue