Chez Phase 2 (inc G): lazy-seq bridge (make-lazy-seq / coll->cells)
The lazy-seq macro expands to (make-lazy-seq (fn* [] (coll->cells body))) and lazy-cat to (concat (lazy-seq c) ...); both seed natives were nil on the prelude, so every overlay fn built on lazy-seq — repeat/iterate/ cycle/dedupe/take-nth/keep/interpose/reductions/map-indexed/distinct/ interleave/tree-seq(->flatten)/partition-all/lazy-cat — hit apply-jolt-nil. lazy-bridge.ss bridges to the cseq model: a jolt-lazyseq is a deferred seq forced once by an extended jolt-seq; jolt-cons defers a lazyseq tail so an infinite (repeat/iterate/cycle) stays lazy. A lazyseq is a new value type, so the dispatchers that don't route through jolt-seq learn it (sequential? for =/hash, plus count/empty?/nth/printers) or a raw unrealized lazyseq escapes — the corpus compares (= [1 3 5] (take-nth …)) against it directly. seq.ss: jolt-concat is now fully lazy (the rest isn't forced until the first coll is exhausted), so a self-referential lazy-cat — fib = (lazy-cat [0 1] (map + (rest fib) fib)) — no longer memoizes its tail as empty by reading fib before its def binds. Prelude parity 1837 -> 1886, 0 new divergences. Floor raised to 1886.
This commit is contained in:
parent
241095977f
commit
e434a7d352
4 changed files with 100 additions and 7 deletions
|
|
@ -170,8 +170,14 @@
|
|||
# sorted-map/sorted-set/subseq/rsubseq + sorted equality; unblocks sorted? and
|
||||
# every fn that calls it: empty/ifn?/reversible?/map?/set?/coll?. Also an emit fix
|
||||
# routing a computed call operator ((sorted-map …) k) through jolt-invoke) 1837.
|
||||
# Phase 2 inc G (jolt-dmw9: lazy-seq bridge — make-lazy-seq / coll->cells over the
|
||||
# cseq model + a jolt-lazyseq arm on the non-jolt-seq dispatchers (sequential?/=/
|
||||
# hash/count/empty?/nth/printers); jolt-concat made fully lazy so a self-
|
||||
# referential lazy-cat (fib) stays productive. Unblocks repeat/iterate/cycle/
|
||||
# dedupe/take-nth/keep/interpose/reductions/map-indexed/distinct/interleave/
|
||||
# tree-seq->flatten/partition-all/lazy-cat) 1886.
|
||||
# Strided runs scale down.
|
||||
(def base-floor (scan-number (or (os/getenv "JOLT_CHEZ_PRELUDE_FLOOR") "1837")))
|
||||
(def base-floor (scan-number (or (os/getenv "JOLT_CHEZ_PRELUDE_FLOOR") "1886")))
|
||||
(def floor (if (os/getenv "JOLT_CORPUS_LIMIT") 0 base-floor))
|
||||
(when (or (> (length diverged) 0) (< pass floor))
|
||||
(printf "REGRESSION: pass %d < floor %d or %d new divergence(s)" pass floor (length diverged)))
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue