core: syntax tier — move when to the overlay ahead of the kernel (jolt-1j0 phase 3)
New 00-syntax tier loaded FIRST (before 00-kernel), interpreted defmacros, so the control macros the compiler and every later tier depend on can live in Clojure. Validated by moving when: the kernel tier, self-hosted analyzer and seq/coll tiers all compile against the overlay when. Constraint: syntax-tier macros may use only special forms + core-renames seed primitives (not second/peek/kernel fns). conformance 228/228 x3, full suite green.
This commit is contained in:
parent
3dafa60e65
commit
d2d33a2ea9
3 changed files with 16 additions and 11 deletions
13
jolt-core/clojure/core/00-syntax.clj
Normal file
13
jolt-core/clojure/core/00-syntax.clj
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
;; clojure.core — syntax tier. The control macros the compiler and every later
|
||||
;; tier depend on (when/cond/and/or/...), expressed as defmacro. Loaded FIRST
|
||||
;; (before 00-kernel), interpreted, so the macros exist before any code that uses
|
||||
;; them is compiled — including the kernel tier, the self-hosted analyzer, and the
|
||||
;; seq/coll tiers.
|
||||
;;
|
||||
;; CONSTRAINT: a macro here may use ONLY special forms (if/do/let*/fn*/not) and
|
||||
;; core-renames SEED primitives (first/next/rest/nth/count/empty?/...). It must
|
||||
;; NOT use kernel-tier fns (second/peek/subvec/...) or anything defined later —
|
||||
;; those don't exist yet when this tier loads.
|
||||
|
||||
(defmacro when [test & body]
|
||||
`(if ~test (do ~@body)))
|
||||
Loading…
Add table
Add a link
Reference in a new issue