;; ========================================================================== ;; boundary.sx — SX language boundary contract ;; ;; Declares the core I/O primitives that any SX host must provide. ;; This is the LANGUAGE contract — not deployment-specific. ;; ;; Pure primitives (Tier 1) are declared in primitives.sx. ;; Deployment-specific I/O lives in boundary-app.sx. ;; Per-service page helpers live in {service}/sx/boundary.sx. ;; ;; Format: ;; (define-io-primitive "name" ;; :params (param1 param2 &key ...) ;; :returns "type" ;; :effects [io] ;; :async true ;; :doc "description" ;; :context :request) ;; ;; ========================================================================== ;; -------------------------------------------------------------------------- ;; Tier 1: Pure primitives — declared in primitives.sx ;; -------------------------------------------------------------------------- (declare-tier :pure :source "primitives.sx") ;; -------------------------------------------------------------------------- ;; Core platform primitives — type inspection + environment ;; -------------------------------------------------------------------------- ;; ;; These are provided by every host. Not IO, not web-specific. (declare-core-primitive "type-of" :params (value) :returns "string" :doc "Return the type name of a value.") (declare-core-primitive "make-env" :params () :returns "dict" :doc "Create a base environment with all primitives.") (declare-core-primitive "identical?" :params (a b) :returns "boolean" :doc "Reference equality check.")