jolt/jolt-core/clojure/core
Yogthos d16e1f4eba Step 4: lazy mapcat overlay — eliminate apply forcing on infinite inputs
mapcat in 10-seq.clj now uses a defn- mapcat-step helper that walks
lazy map results element-by-element (cons + lazy-seq), with explicit
arities for 1/2/3/4+ colls. The 4+-coll arity still uses apply to
spread colls to map, but apply no longer forces the inner map result.

Previously (apply concat (apply map f colls)) forced the lazy map
result through core-apply realize-for-iteration, which hung on
infinite inputs. The new step-based impl walks one element at a time
via first/rest/seq primitives.

Re-enabled deferred mapcat infinite-input harness case. 19/19 pass.

Gates: lazy-infinite 19/19, conformance 229/229 interpret+self-host
(compile 228/229 — 1 pre-existing protocol error), specs 32/32.
2026-06-08 08:14:59 -04:00
..
00-kernel.clj core: staged-bootstrap kernel tier; move second/peek/subvec/mapv/update to Clojure 2026-06-06 13:15:17 -04:00
00-syntax.clj core: port when-let to the overlay — finishes the Phase 3 macro migration 2026-06-07 19:49:27 -04:00
10-seq.clj Step 4: lazy mapcat overlay — eliminate apply forcing on infinite inputs 2026-06-08 08:14:59 -04:00
20-coll.clj Phase 5: true laziness — lazy transformers + deadlined harness 2026-06-08 00:40:56 -04:00
30-macros.clj core: port when-let to the overlay — finishes the Phase 3 macro migration 2026-06-07 19:49:27 -04:00
MIGRATION.md migration doc: phase 3 status + the hot-macro expansion-speed finding 2026-06-07 08:47:04 -04:00