Unicode escapes, variadic infix fix, spreads demos, scoped-effects + foundations plans
- Add \uXXXX unicode escape support to parser.py and parser.sx spec - Add char-from-code primitive (Python chr(), JS String.fromCharCode()) - Fix variadic infix operators in both bootstrappers (js.sx, py.sx) — (+ a b c d) was silently dropping terms, now left-folds correctly - Rebootstrap sx_ref.py and sx-browser.js with all fixes - Fix 3 pre-existing map-dict test failures in shared/sx/tests/run.py - Add live demos alongside examples in spreads essay (side-by-side layout) - Add scoped-effects plan: algebraic effects as unified foundation for spread/collect/island/lake/signal/context - Add foundations plan: CEK machine, the computational floor, three-axis model (depth/topology/linearity), Curry-Howard correspondence - Route both plans in page-functions.sx and nav-data.sx Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -1259,11 +1259,21 @@
|
||||
|
||||
(define js-emit-infix
|
||||
(fn ((op :as string) (args :as list))
|
||||
(let ((js-op (js-op-symbol op)))
|
||||
(if (and (= (len args) 1) (= op "-"))
|
||||
(str "(-" (js-expr (first args)) ")")
|
||||
(str "(" (js-expr (first args))
|
||||
" " js-op " " (js-expr (nth args 1)) ")")))))
|
||||
(let ((js-op (js-op-symbol op))
|
||||
(n (len args)))
|
||||
(cond
|
||||
(and (= n 1) (= op "-"))
|
||||
(str "(-" (js-expr (first args)) ")")
|
||||
(= n 2)
|
||||
(str "(" (js-expr (first args))
|
||||
" " js-op " " (js-expr (nth args 1)) ")")
|
||||
;; Variadic: left-fold (a op b op c op d ...)
|
||||
:else
|
||||
(let ((result (js-expr (first args))))
|
||||
(for-each (fn (arg)
|
||||
(set! result (str "(" result " " js-op " " (js-expr arg) ")")))
|
||||
(rest args))
|
||||
result)))))
|
||||
|
||||
|
||||
;; --------------------------------------------------------------------------
|
||||
|
||||
Reference in New Issue
Block a user