core: close surfaced gaps — first-class sorted colls, with-out-str, rand arity, deref reduced

jolt-ti9: sorted-map/sorted-set are now first-class across the collection fns —
get/assoc/dissoc/conj/contains?/keys/vals/disj and call-as-fn all operate on the
wrapper and preserve sort order. The by-comparator constructors (sorted-map-by/
sorted-set-by) now thread the user comparator (numeric or boolean-predicate) through
all derived colls. Sorted predicates/ctors/ops moved above core-conj so the
collection fns can branch on them; jolt-invoke (interpreter) gets inline branches.

jolt-rfw: add with-out-str (binds output to a string buffer) + the macro.
jolt-ek3: (rand n) arity and deref-of-reduced (uuid? still deferred).

Specs: new io-spec.janet; sorted-spec expanded to pin the now-working map/set ops
and by-comparator ordering; predicate/number spec restorations.
This commit is contained in:
Yogthos 2026-06-10 08:00:36 -04:00
parent ae8b635602
commit afef55704c
7 changed files with 174 additions and 30 deletions

View file

@ -124,6 +124,7 @@
["integer? fraction" "false" "(integer? 5.5)"]
["reduced? wrapped" "true" "(reduced? (reduced 1))"]
["reduced? plain" "false" "(reduced? 1)"]
["deref reduced" "9" "(deref (reduced 9))"]
["unreduced wrapped" "9" "(unreduced (reduced 9))"]
["unreduced plain" "9" "(unreduced 9)"]
["not-empty full" "[1]" "(not-empty [1])"]