fix: keyword/set/map as IFn in higher-order fns; nil-seq; take-nth/interpose/sort-by/min-key arities
Biggest fix: jolt keywords are Janet keywords and maps are Janet structs/phm, but (:a struct) at the Janet level returns nil (not a Clojure accessor) and errors on a phm — so core-map/filter/sort-by/group-by/etc. calling (f x) directly broke the ubiquitous keyword/set/map-as-function idioms ((map :a coll), (sort-by :k coll), (filter a-set coll), (group-by :type coll)). Added as-fn coercion (keyword/symbol -> key lookup, map -> key lookup, set -> membership) applied at the entry of map/filter/remove/keep/mapv/filterv/sort-by/group-by/partition-by/some/ not-any?/not-every?/take-while/drop-while/min-key/max-key. Also: - realize-for-iteration treats nil as an empty seq (Clojure semantics), fixing nth/nthrest/nthnext/take-last/reduce/doseq over nil. - take-nth and interpose gained their 1-arg transducer arities. - sort-by gained the 3-arg (keyfn comparator coll) form. - min-key/max-key: single item returns it without calling f; ties keep the last. - underive gained the 2-arg global-hierarchy form. clojure-test-suite pass 3535->3649, errors 177->122, clean files 39->44. spec: seq/IFn-values-as-functions (11). jpm test green.
This commit is contained in:
parent
acfcf2f94b
commit
2ccfa675f7
3 changed files with 99 additions and 24 deletions
|
|
@ -18,9 +18,9 @@
|
|||
|
||||
# Baseline: assertions Jolt currently passes across the suite. Raise as Jolt
|
||||
# improves so a regression (previously-passing assertion breaking) is caught.
|
||||
(def baseline-pass 3450)
|
||||
(def baseline-pass 3600)
|
||||
# A file is "clean" when it ran with zero failures AND zero errors.
|
||||
(def baseline-clean-files 38)
|
||||
(def baseline-clean-files 43)
|
||||
# Per-file wall-clock budget (seconds). Normal files finish in well under 1s;
|
||||
# this only fires on infinite-sequence hangs.
|
||||
(def per-file-timeout 6)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue