You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
JVM Clojure's MapEntry is vector-shaped but distinct: (key [1 2])
throws because a plain vector isn't a Map.Entry. mino conflated
the two, so key.cljc and val.cljc failed on the throw assertions.
Add a distinct MINO_MAP_ENTRY type carrying (k, v). seq of a map /
sorted-map / record now produces MAP_ENTRY values; find /
clojure.lang.MapEntry/create likewise. key / val accept only
MAP_ENTRY. vector? / coll? / counted? / associative? /
reversible? / sequential? return true on it. Equality with
[k v] is element-wise via the cross-type sequential path; hash
matches a 2-vector so it round-trips through hash maps.
first / rest / nth / get / count / empty? / vector destructuring
/ compare / into-map / conj-map / conj-of-MAP_ENTRY all dispatch
through it. New C primitive `map-entry` constructs one.
aset is intentionally not implemented for MAP_ENTRY (entries are
immutable in JVM Clojure too).
Internal 1476 / 7089 / 0. key.cljc 8/17 -> 17/17, val.cljc 7/16 ->
16/16, plus merge / sort / sort_by / zipmap / seq fixes for the
MAP_ENTRY contagion through into / conj / compare / hash. External
suite 209 -> 211 OK.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
0 commit comments