reader: #?@ empty splice fix (nil→@[]), #? nil→:jolt/skip, map reader handles #_/#?@ in K/V evaluator: unwrap-meta-name helper, deftype interns ->Name too, dot-suffix fix core: comment/prefer-method stubs, *unchecked-math*/*clojure-version* dynamic vars
839 B
Janet apply requires a function/cfunction. When tables/structs are used as lookup maps (like deftype fields, multimethod dispatch tables), they get called via (get f key) not (apply f args). The evaluator's default call path checks (function? f) before apply, falling back to (get f (first args)) for single-arg table/struct calls.
§
Janet structs silently omit entries with nil values: (struct ;[:x nil :y 1]) → {:y 1}. The :x key is completely dropped from the struct, not just set to nil. Use @{} (mutable table) when map needs nil-valued entries. This caused the &env implicit binding to fail — (put new-bindings "&env" {'ns nil}) created a struct that became empty {}, so (:ns &env) failed with unknown method. Fix: use @{} table for bindings that may contain nil values, or use a non-nil sentinel.