Move defstyle/deftype/defeffect to web-forms.sx — domain forms, not core

These are domain definition forms (same pattern as defhandler, defpage,
etc.), not core language constructs. Moving them to web-forms.sx keeps
the core evaluator + types.sx cleaner for WASM compilation.

web-forms.sx now loaded in both JS and Python build pipelines.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-03-24 12:22:08 +00:00
parent 9caf8b6e94
commit 26e16f6aa4
6 changed files with 253 additions and 93 deletions

View File

@@ -278,23 +278,11 @@
(every? (fn (item) (= (type-of item) "dict")) data))))
;; --------------------------------------------------------------------------
;; defstyle — bind name to evaluated style expression
;; --------------------------------------------------------------------------
(define sf-defstyle
(fn ((args :as list) (env :as dict))
(let ((name-sym (first args))
(value (trampoline (eval-expr (nth args 1) env))))
(env-bind! env (symbol-name name-sym) value)
value)))
;; --------------------------------------------------------------------------
;; Registration — make these available as special forms in the evaluator
;; NOTE: defstyle has moved to web/web-forms.sx
;; --------------------------------------------------------------------------
(register-special-form! "defstyle" sf-defstyle)
(register-special-form! "defhandler" sf-defhandler)
(register-special-form! "defpage" sf-defpage)
(register-special-form! "defquery" sf-defquery)