Add bigdec min/max (review follow-up)

Review found (< 1M 2M) worked but (min 1M 2M) threw — incoherent. Wire min/max
the same way as the other ops: value-position jolt-min/jolt-max shims (new in
seq.ss, added to core-value-procs) and call-position via bd-spec/bd-ops ->
jbd-min/jbd-max.

min/max return the original operand by value, not a coerced copy, matching
Clojure: (min 1M 2.0) -> 1M, (max 1M 2.0) -> 2.0, (min 1.50M 2M) -> 1.50M; a tie
keeps the second operand ((max 1.5M 1.50M) -> 1.50M). bigdec mixed with a flonum
in call position stays in the documented :any/contagion gap (value position
handles it). Re-mint; 6 more JVM-certified rows.
This commit is contained in:
Yogthos 2026-06-25 20:22:26 -04:00
parent 6fcc9fa8e6
commit 09a9ad8c75
7 changed files with 207 additions and 178 deletions

View file

@ -1517,6 +1517,6 @@
(guard (e (#t #f))
(def-var! "clojure.pprint" "add-padding" (letrec ((add-padding (lambda (width s) (let fnrec2063 ((width width) (s s)) (let* ((padding (max 0 (- width (jolt-count s))))) (jolt-apply (var-deref "clojure.core" "str") (jolt-invoke (var-deref "clojure.string" "join") (jolt-invoke (var-deref "clojure.core" "repeat") padding (integer->char 32))) s)))))) add-padding)))
(guard (e (#t #f))
(def-var-with-meta! "clojure.pprint" "print-table" (letrec ((print-table (case-lambda ((ks rows) (let fnrec2064 ((ks ks) (rows rows)) (if (jolt-truthy? (jolt-seq rows)) (let* ((widths (jolt-map (lambda (k) (let fnrec2065 ((k k)) (let* ((_a$2067 max) (_a$2068 (jolt-count (jolt-invoke (var-deref "clojure.core" "str") k))) (_a$2069 (jolt-map (lambda (p__39_) (let fnrec2066 ((p__39_ p__39_)) (jolt-count (jolt-invoke (var-deref "clojure.core" "str") (jolt-get p__39_ k))))) rows))) (jolt-apply _a$2067 _a$2068 _a$2069)))) ks)) (spacers (jolt-map (lambda (p__40_) (let fnrec2070 ((p__40_ p__40_)) (jolt-apply (var-deref "clojure.core" "str") (jolt-invoke (var-deref "clojure.core" "repeat") p__40_ "-")))) widths)) (fmt-row (lambda (leader divider trailer row) (let fnrec2071 ((leader leader) (divider divider) (trailer trailer) (row row)) (jolt-invoke (var-deref "clojure.core" "str") leader (jolt-apply (var-deref "clojure.core" "str") (jolt-invoke (var-deref "clojure.core" "interpose") divider (let* ((_a$2074 (lambda (G__96) (let fnrec2072 ((G__96 G__96)) (let* ((G__97 G__96) (col (jolt-nth G__97 0 jolt-nil)) (width (jolt-nth G__97 1 jolt-nil))) (jolt-invoke (var-deref "clojure.pprint" "add-padding") width (jolt-invoke (var-deref "clojure.core" "str") col)))))) (_a$2075 (jolt-map jolt-vector (jolt-map (lambda (p__41_) (let fnrec2073 ((p__41_ p__41_)) (jolt-get row p__41_))) ks) widths))) (jolt-map _a$2074 _a$2075)))) trailer))))) (begin (jolt-invoke (var-deref "clojure.core" "println")) (jolt-invoke (var-deref "clojure.core" "println") (jolt-invoke fmt-row "| " " | " " |" (jolt-invoke (var-deref "clojure.core" "zipmap") ks ks))) (jolt-invoke (var-deref "clojure.core" "println") (jolt-invoke fmt-row "|-" "-+-" "-|" (jolt-invoke (var-deref "clojure.core" "zipmap") ks spacers))) (begin (jolt-count (jolt-map (lambda (row) (let fnrec2076 ((row row)) (begin (jolt-invoke (var-deref "clojure.core" "println") (jolt-invoke fmt-row "| " " | " " |" row)) jolt-nil))) rows)) jolt-nil))) jolt-nil))) ((rows) (let fnrec2077 ((rows rows)) (jolt-invoke print-table (jolt-keys (jolt-first rows)) rows)))))) print-table) (let* ((_o$2078 (keyword #f "doc")) (_o$2079 "Prints a collection of maps in a textual table.")) (jolt-hash-map _o$2078 _o$2079))))
(def-var-with-meta! "clojure.pprint" "print-table" (letrec ((print-table (case-lambda ((ks rows) (let fnrec2064 ((ks ks) (rows rows)) (if (jolt-truthy? (jolt-seq rows)) (let* ((widths (jolt-map (lambda (k) (let fnrec2065 ((k k)) (let* ((_a$2067 jolt-max) (_a$2068 (jolt-count (jolt-invoke (var-deref "clojure.core" "str") k))) (_a$2069 (jolt-map (lambda (p__39_) (let fnrec2066 ((p__39_ p__39_)) (jolt-count (jolt-invoke (var-deref "clojure.core" "str") (jolt-get p__39_ k))))) rows))) (jolt-apply _a$2067 _a$2068 _a$2069)))) ks)) (spacers (jolt-map (lambda (p__40_) (let fnrec2070 ((p__40_ p__40_)) (jolt-apply (var-deref "clojure.core" "str") (jolt-invoke (var-deref "clojure.core" "repeat") p__40_ "-")))) widths)) (fmt-row (lambda (leader divider trailer row) (let fnrec2071 ((leader leader) (divider divider) (trailer trailer) (row row)) (jolt-invoke (var-deref "clojure.core" "str") leader (jolt-apply (var-deref "clojure.core" "str") (jolt-invoke (var-deref "clojure.core" "interpose") divider (let* ((_a$2074 (lambda (G__96) (let fnrec2072 ((G__96 G__96)) (let* ((G__97 G__96) (col (jolt-nth G__97 0 jolt-nil)) (width (jolt-nth G__97 1 jolt-nil))) (jolt-invoke (var-deref "clojure.pprint" "add-padding") width (jolt-invoke (var-deref "clojure.core" "str") col)))))) (_a$2075 (jolt-map jolt-vector (jolt-map (lambda (p__41_) (let fnrec2073 ((p__41_ p__41_)) (jolt-get row p__41_))) ks) widths))) (jolt-map _a$2074 _a$2075)))) trailer))))) (begin (jolt-invoke (var-deref "clojure.core" "println")) (jolt-invoke (var-deref "clojure.core" "println") (jolt-invoke fmt-row "| " " | " " |" (jolt-invoke (var-deref "clojure.core" "zipmap") ks ks))) (jolt-invoke (var-deref "clojure.core" "println") (jolt-invoke fmt-row "|-" "-+-" "-|" (jolt-invoke (var-deref "clojure.core" "zipmap") ks spacers))) (begin (jolt-count (jolt-map (lambda (row) (let fnrec2076 ((row row)) (begin (jolt-invoke (var-deref "clojure.core" "println") (jolt-invoke fmt-row "| " " | " " |" row)) jolt-nil))) rows)) jolt-nil))) jolt-nil))) ((rows) (let fnrec2077 ((rows rows)) (jolt-invoke print-table (jolt-keys (jolt-first rows)) rows)))))) print-table) (let* ((_o$2078 (keyword #f "doc")) (_o$2079 "Prints a collection of maps in a textual table.")) (jolt-hash-map _o$2078 _o$2079))))
(guard (e (#t #f))
(jolt-invoke (var-deref "clojure.core" "__set-pprint-write-hook!") (lambda (s) (let fnrec2080 ((s s)) (let* ((o (var-deref "clojure.core" "*out*"))) (if (jolt-truthy? (jolt-invoke (var-deref "clojure.core" "instance-check") (jolt-symbol #f "PrettyWriter") o)) (begin (jolt-invoke (var-deref "clojure.pprint" "-write") o s) #t) jolt-nil))))))