Remove dead native transduce shim (overlay already provides it)
The overlay defines transduce in clojure/core/22-coll.clj as a pure composition (xf (reduce xf init coll)), and it shadows the native jolt-transduce by load order. The compiled overlay version is already what gets baked into the seed, so the native binding in natives-transduce.ss was dead weight. transduce is not used by the self-hosted compiler and no overlay tier before 22-coll references it, so removing the native binding is safe. Re-minting produces a byte-identical seed, which proves the runtime is unchanged. sequence stays native (its transformer iterator drives the reduced box and lazy realization directly).
This commit is contained in:
parent
7f163faf2e
commit
3d0cbed3c5
1 changed files with 5 additions and 13 deletions
|
|
@ -25,18 +25,11 @@
|
||||||
(def-var! "clojure.core" "volatile!" jolt-volatile!)
|
(def-var! "clojure.core" "volatile!" jolt-volatile!)
|
||||||
(def-var! "clojure.core" "deref" jolt-deref)
|
(def-var! "clojure.core" "deref" jolt-deref)
|
||||||
|
|
||||||
;; --- transduce / sequence ----------------------------------------------------
|
;; --- sequence ----------------------------------------------------------------
|
||||||
;; (transduce xform f coll) / (transduce xform f init coll): build the transformed
|
;; transduce lives in the overlay (clojure/core/22-coll.clj): it's a pure
|
||||||
;; reducing fn (xform f), reduce it over coll (reduce-seq honors `reduced`), then
|
;; composition (xf (reduce xf init coll)) over reduce, so the Clojure version
|
||||||
;; run the completion (1-arg) arity. The 3-arg init defaults to (f) — the rf's
|
;; lowers to the same code the native shim did. sequence stays native (below):
|
||||||
;; 0-arity, e.g. (+) = 0, (conj) = [].
|
;; its transformer iterator drives the reduced box + lazy realization directly.
|
||||||
(define jolt-transduce
|
|
||||||
(case-lambda
|
|
||||||
((xform f coll) (jolt-transduce xform f (jolt-invoke f) coll))
|
|
||||||
((xform f init coll)
|
|
||||||
(let* ((xf (jolt-invoke xform f))
|
|
||||||
(res (reduce-seq xf init (jolt-seq coll))))
|
|
||||||
(jolt-invoke xf res)))))
|
|
||||||
|
|
||||||
;; (sequence coll) -> a seq; (sequence xform coll) -> a LAZY seq of coll transformed
|
;; (sequence coll) -> a seq; (sequence xform coll) -> a LAZY seq of coll transformed
|
||||||
;; by xform. A transformer iterator (mirrors clojure.core's TransformerIterator):
|
;; by xform. A transformer iterator (mirrors clojure.core's TransformerIterator):
|
||||||
|
|
@ -87,7 +80,6 @@
|
||||||
((coll) (jolt-seq coll))
|
((coll) (jolt-seq coll))
|
||||||
((xform coll) (sequence-xf xform coll))))
|
((xform coll) (sequence-xf xform coll))))
|
||||||
|
|
||||||
(def-var! "clojure.core" "transduce" jolt-transduce)
|
|
||||||
(def-var! "clojure.core" "sequence" jolt-sequence)
|
(def-var! "clojure.core" "sequence" jolt-sequence)
|
||||||
|
|
||||||
;; --- cat ---------------------------------------------------------------------
|
;; --- cat ---------------------------------------------------------------------
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue