core: start Phase 4 — move vary-meta and namespace-munge to the overlay
First Phase 4 batch: the host-coupled fns whose logic is pure composition of existing core primitives, so no new jolt.host surface is needed. vary-meta is just (with-meta obj (apply f (meta obj) args)); namespace-munge is a char map over str. Both land in the 20-coll tier; the Janet core-* defns and bindings are gone. Added namespace-munge spec cases and a vary-meta extra-args case. The heavily host-coupled fns (atom/var/transient internals, arrays, proxy, futures) stay in Janet pending a thin host-primitive expansion.
This commit is contained in:
parent
8bc5bd6f61
commit
e6ff4b8a77
4 changed files with 20 additions and 6 deletions
|
|
@ -213,3 +213,15 @@
|
|||
(recur (assoc m (first xs) (second xs)) (next (next xs)))
|
||||
m))
|
||||
s))
|
||||
|
||||
;; Phase 4 (jolt-1j0): host-coupled fns that are pure logic over existing core
|
||||
;; primitives, so they need no new jolt.host surface.
|
||||
|
||||
;; vary-meta: f applied to obj's metadata (+ extra args), reattached. meta and
|
||||
;; with-meta are the irreducible host primitives; vary-meta is just their compose.
|
||||
(defn vary-meta [obj f & args]
|
||||
(with-meta obj (apply f (meta obj) args)))
|
||||
|
||||
;; namespace-munge: Clojure namespace name -> legal Java package name (- -> _).
|
||||
(defn namespace-munge [s]
|
||||
(apply str (map (fn [c] (if (= c \-) \_ c)) (seq (str s)))))
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue