Phase 10: Standard Library — 9 modules, core-reduce set fix
New modules (loadable as Clojure source):
- clojure/string.clj (19 fns): blank?, capitalize, lower-case, upper-case,
includes?, join, replace, replace-first, reverse, split, starts-with?,
ends-with?, trim, triml, trimr, trim-newline, escape, index-of, last-index-of
- clojure/set.clj (10 fns): union, intersection, difference, select, project,
rename, rename-keys, map-invert, index, subset?, superset?
(simplified: no & rest arities due to evaluator limitation)
- clojure/walk.clj (7 fns): walk, postwalk, prewalk, postwalk-replace,
prewalk-replace, keywordize-keys, stringify-keys
- clojure/zip.clj: full zipper implementation (25 fns)
- clojure/edn.clj: EDN reader stubs
- clojure/java_io.clj: file I/O wrappers
- jolt/interop.clj: Janet interop (eval, type, describe)
- jolt/shell.clj: shell command execution via os/shell
- jolt/http.clj: HTTP client via net/request
Bug fixes:
- core-reduce: convert sets to seq before iterating (fixes reduce over sets)
- core-every?: convert sets to seq before iterating
- core-filter: convert sets to seq before iterating
- All .clj files stripped of docstrings (Jolt defn doesn't support them)
- String interop bindings (str-trim, str-upper, str-lower, etc.) in core-bindings
20+ assertions in sections 40-43: string ops, set ops, module loadability
315 ok, 2 fail (pre-existing, unchanged)" && echo "committed"