spec: read/write/display — S-expression reader/writer on ports
Adds read, write, display, newline, write-to-string, display-to-string
and current-*-port primitives to both JS and OCaml hosts.
JS: sxReadNormalize (#t/#f→true/false), sxReadConvert (()→nil),
sxEq array comparison, sxWriteVal symbol/keyword name fix,
readerMacroGet/readerMacroSet registry in parser platform.
OCaml: sx_write_val/sx_display_val helpers, read/write/display/newline
primitives on port types; parser extended for #t/#f and N/D rationals.
42 new tests (test-read-write.sx), all passing on JS and OCaml.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -948,6 +948,61 @@
|
||||
:returns "boolean"
|
||||
:doc "True if a char is immediately available on the port.")
|
||||
|
||||
|
||||
(define-primitive
|
||||
"read"
|
||||
:params (&rest (p :as input-port))
|
||||
:returns "any"
|
||||
:doc "Read one datum from port; returns eof-object at end.")
|
||||
|
||||
(define-primitive
|
||||
"write"
|
||||
:params (v &rest (p :as output-port))
|
||||
:returns "nil"
|
||||
:doc "Serialize v to port with quoting — strings quoted, chars as #\\a notation.")
|
||||
|
||||
(define-primitive
|
||||
"display"
|
||||
:params (v &rest (p :as output-port))
|
||||
:returns "nil"
|
||||
:doc "Serialize v to port without quoting — strings unquoted, chars as characters.")
|
||||
|
||||
(define-primitive
|
||||
"newline"
|
||||
:params (&rest (p :as output-port))
|
||||
:returns "nil"
|
||||
:doc "Write a newline to port.")
|
||||
|
||||
(define-primitive
|
||||
"write-to-string"
|
||||
:params (v)
|
||||
:returns "string"
|
||||
:doc "Serialize v with write quoting, return as string.")
|
||||
|
||||
(define-primitive
|
||||
"display-to-string"
|
||||
:params (v)
|
||||
:returns "string"
|
||||
:doc "Serialize v with display format, return as string.")
|
||||
|
||||
(define-primitive
|
||||
"current-input-port"
|
||||
:params ()
|
||||
:returns "any"
|
||||
:doc "Return current default input port.")
|
||||
|
||||
(define-primitive
|
||||
"current-output-port"
|
||||
:params ()
|
||||
:returns "any"
|
||||
:doc "Return current default output port.")
|
||||
|
||||
(define-primitive
|
||||
"current-error-port"
|
||||
:params ()
|
||||
:returns "any"
|
||||
:doc "Return current error port.")
|
||||
|
||||
(define-module :stdlib.math)
|
||||
|
||||
(define-primitive
|
||||
|
||||
Reference in New Issue
Block a user