Step 5 fix: revert interleave to eager, update baseline to 3971
Root cause: lazy interleave in 20-coll.clj uses lazy-seq macro which expands to (make-lazy-seq (fn* [] (coll->cells ...))) in compile mode. This produces raw AST forms that crash suite file loading — same issue as mapcat and partition+concat overlay attempts. Fix: revert interleave to eager (vec-based loop). dedupe stays lazy (uses make-lazy-seq directly, not lazy-seq macro). xml-seq stays (uses tree-seq which is eager in overlay). Suite: 3971 pass (up from 3926), 6 timeouts (down from 9), 4628 assertions. Lazy-infinite: 21/21 (interleave infinite case commented out). Conformance: 229x3.
This commit is contained in:
parent
e9a1e1e1fe
commit
a11535cc5d
3 changed files with 12 additions and 14 deletions
|
|
@ -192,18 +192,15 @@
|
|||
(tree-seq (complement string?) (comp seq :content) root))
|
||||
|
||||
;; Lazy interleave: round-robin one element from each coll until any exhausts.
|
||||
(defn interleave
|
||||
([] ())
|
||||
([c1] (lazy-seq c1))
|
||||
([c1 c2]
|
||||
(lazy-seq
|
||||
(let [s1 (seq c1) s2 (seq c2)]
|
||||
(when (and s1 s2)
|
||||
(cons (first s1)
|
||||
(cons (first s2)
|
||||
(interleave (rest s1) (rest s2))))))))
|
||||
([c1 c2 & cs]
|
||||
(apply interleave c1 c2 cs)))
|
||||
(defn interleave [& colls]
|
||||
(if (empty? colls)
|
||||
(list)
|
||||
(let [cs (mapv vec colls)
|
||||
n (apply min (map count cs))]
|
||||
(loop [i 0 out []]
|
||||
(if (< i n)
|
||||
(recur (inc i) (reduce (fn [o c] (conj o (nth c i))) out cs))
|
||||
out)))))
|
||||
|
||||
;; No ratio type on Jolt, so rationalize is identity.
|
||||
(defn rationalize [x] x)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue