Document why reader-conditional stays a native shim

Attempting to migrate the reader-conditional constructor to the overlay
revealed that an overlay defn returning a :jolt/type-tagged map literal
silently fails to bind during the seed mint: the guard around each
prelude form swallows the load-time error, leaving the var unbound. This
is the same reason every other tagged-value constructor (atom,
volatile!, tagged-literal) is native, so reader-conditional is
reclassified STAY-PRIMITIVE rather than a safe migration.
This commit is contained in:
Yogthos 2026-06-30 10:42:49 -04:00
parent d77b4e6420
commit 1481a806b7

View file

@ -17,8 +17,12 @@
jolt-nil) jolt-nil)
;; --- reader-conditional: a tagged map (reader-conditional? is an overlay ;; --- reader-conditional: a tagged map (reader-conditional? is an overlay
;; tagged-value predicate that reads :jolt/type). re-matcher / re-find / re-groups ;; tagged-value predicate that reads :jolt/type). STAYS NATIVE: building a
;; are the stateful matcher API in regex.ss. ;; :jolt/type-tagged map is part of the native value model — an overlay defn
;; returning {:jolt/type ...} silently fails to bind during the seed mint (the
;; guard around each prelude form swallows the load-time error), the same reason
;; every other tagged-value constructor (atom/volatile!/tagged-literal) is native.
;; re-matcher / re-find / re-groups are the stateful matcher API in regex.ss.
(define nr-kw-type (keyword "jolt" "type")) (define nr-kw-type (keyword "jolt" "type"))
(define nr-kw-rc (keyword "jolt" "reader-conditional")) (define nr-kw-rc (keyword "jolt" "reader-conditional"))
(define nr-kw-form (keyword #f "form")) (define nr-kw-form (keyword #f "form"))