Add vector primitive specs to spec/primitives.sx
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -168,6 +168,69 @@
|
|||||||
:returns "number"
|
:returns "number"
|
||||||
:doc "Convert inexact to nearest exact integer.")
|
:doc "Convert inexact to nearest exact integer.")
|
||||||
|
|
||||||
|
(define-primitive
|
||||||
|
"make-vector"
|
||||||
|
:params ((n :as number))
|
||||||
|
:returns "vector"
|
||||||
|
:doc "Create vector of size n, optionally filled.")
|
||||||
|
|
||||||
|
(define-primitive
|
||||||
|
"vector"
|
||||||
|
:params ()
|
||||||
|
:returns "vector"
|
||||||
|
:doc "Create vector from arguments.")
|
||||||
|
|
||||||
|
(define-primitive
|
||||||
|
"vector?"
|
||||||
|
:params ((x :as any))
|
||||||
|
:returns "boolean"
|
||||||
|
:doc "True if x is a vector.")
|
||||||
|
|
||||||
|
(define-primitive
|
||||||
|
"vector-length"
|
||||||
|
:params ((v :as vector))
|
||||||
|
:returns "number"
|
||||||
|
:doc "Number of elements.")
|
||||||
|
|
||||||
|
(define-primitive
|
||||||
|
"vector-ref"
|
||||||
|
:params ((v :as vector) (i :as number))
|
||||||
|
:returns "any"
|
||||||
|
:doc "Element at index.")
|
||||||
|
|
||||||
|
(define-primitive
|
||||||
|
"vector-set!"
|
||||||
|
:params ((v :as vector) (i :as number) (val :as any))
|
||||||
|
:returns "nil"
|
||||||
|
:doc "Set element at index.")
|
||||||
|
|
||||||
|
(define-primitive
|
||||||
|
"vector->list"
|
||||||
|
:params ((v :as vector))
|
||||||
|
:returns "list"
|
||||||
|
:doc "Convert vector to list.")
|
||||||
|
|
||||||
|
(define-primitive
|
||||||
|
"list->vector"
|
||||||
|
:params ((l :as list))
|
||||||
|
:returns "vector"
|
||||||
|
:doc "Convert list to vector.")
|
||||||
|
|
||||||
|
;; --------------------------------------------------------------------------
|
||||||
|
;; Core — Predicates
|
||||||
|
;; --------------------------------------------------------------------------
|
||||||
|
(define-primitive
|
||||||
|
"vector-fill!"
|
||||||
|
:params ((v :as vector) (val :as any))
|
||||||
|
:returns "nil"
|
||||||
|
:doc "Fill all elements.")
|
||||||
|
|
||||||
|
(define-primitive
|
||||||
|
"vector-copy"
|
||||||
|
:params ((v :as vector))
|
||||||
|
:returns "vector"
|
||||||
|
:doc "Independent shallow copy.")
|
||||||
|
|
||||||
(define-primitive
|
(define-primitive
|
||||||
"min"
|
"min"
|
||||||
:params (&rest (args :as number))
|
:params (&rest (args :as number))
|
||||||
@@ -216,9 +279,6 @@
|
|||||||
:doc "Inequality."
|
:doc "Inequality."
|
||||||
:body (not (= a b)))
|
:body (not (= a b)))
|
||||||
|
|
||||||
;; --------------------------------------------------------------------------
|
|
||||||
;; Core — Predicates
|
|
||||||
;; --------------------------------------------------------------------------
|
|
||||||
(define-primitive
|
(define-primitive
|
||||||
"eq?"
|
"eq?"
|
||||||
:params (a b)
|
:params (a b)
|
||||||
@@ -239,6 +299,9 @@
|
|||||||
:doc "Deep structural equality. Recursively compares collections."
|
:doc "Deep structural equality. Recursively compares collections."
|
||||||
:body (= a b))
|
:body (= a b))
|
||||||
|
|
||||||
|
;; --------------------------------------------------------------------------
|
||||||
|
;; Core — Logic
|
||||||
|
;; --------------------------------------------------------------------------
|
||||||
(define-primitive
|
(define-primitive
|
||||||
"<"
|
"<"
|
||||||
:params ((a :as number) (b :as number))
|
:params ((a :as number) (b :as number))
|
||||||
@@ -251,6 +314,9 @@
|
|||||||
:returns "boolean"
|
:returns "boolean"
|
||||||
:doc "Greater than.")
|
:doc "Greater than.")
|
||||||
|
|
||||||
|
;; --------------------------------------------------------------------------
|
||||||
|
;; Core — Strings
|
||||||
|
;; --------------------------------------------------------------------------
|
||||||
(define-primitive
|
(define-primitive
|
||||||
"<="
|
"<="
|
||||||
:params ((a :as number) (b :as number))
|
:params ((a :as number) (b :as number))
|
||||||
@@ -302,9 +368,6 @@
|
|||||||
:doc "True if x is a boolean (true or false)."
|
:doc "True if x is a boolean (true or false)."
|
||||||
:body (= (type-of x) "boolean"))
|
:body (= (type-of x) "boolean"))
|
||||||
|
|
||||||
;; --------------------------------------------------------------------------
|
|
||||||
;; Core — Logic
|
|
||||||
;; --------------------------------------------------------------------------
|
|
||||||
(define-primitive
|
(define-primitive
|
||||||
"number?"
|
"number?"
|
||||||
:params (x)
|
:params (x)
|
||||||
@@ -319,9 +382,6 @@
|
|||||||
:doc "True if x is a string."
|
:doc "True if x is a string."
|
||||||
:body (= (type-of x) "string"))
|
:body (= (type-of x) "string"))
|
||||||
|
|
||||||
;; --------------------------------------------------------------------------
|
|
||||||
;; Core — Strings
|
|
||||||
;; --------------------------------------------------------------------------
|
|
||||||
(define-primitive
|
(define-primitive
|
||||||
"list?"
|
"list?"
|
||||||
:params (x)
|
:params (x)
|
||||||
@@ -373,6 +433,9 @@
|
|||||||
:returns "string"
|
:returns "string"
|
||||||
:doc "Concatenate all args as strings. nil → empty string, bool → true/false.")
|
:doc "Concatenate all args as strings. nil → empty string, bool → true/false.")
|
||||||
|
|
||||||
|
;; --------------------------------------------------------------------------
|
||||||
|
;; Core — Collections
|
||||||
|
;; --------------------------------------------------------------------------
|
||||||
(define-primitive
|
(define-primitive
|
||||||
"concat"
|
"concat"
|
||||||
:params (&rest (colls :as list))
|
:params (&rest (colls :as list))
|
||||||
@@ -433,9 +496,6 @@
|
|||||||
:returns "string"
|
:returns "string"
|
||||||
:doc "Strip leading/trailing whitespace.")
|
:doc "Strip leading/trailing whitespace.")
|
||||||
|
|
||||||
;; --------------------------------------------------------------------------
|
|
||||||
;; Core — Collections
|
|
||||||
;; --------------------------------------------------------------------------
|
|
||||||
(define-primitive
|
(define-primitive
|
||||||
"split"
|
"split"
|
||||||
:params ((s :as string) &rest (sep :as string))
|
:params ((s :as string) &rest (sep :as string))
|
||||||
@@ -478,6 +538,9 @@
|
|||||||
:returns "boolean"
|
:returns "boolean"
|
||||||
:doc "True if string s ends with suffix.")
|
:doc "True if string s ends with suffix.")
|
||||||
|
|
||||||
|
;; --------------------------------------------------------------------------
|
||||||
|
;; Core — Dict operations
|
||||||
|
;; --------------------------------------------------------------------------
|
||||||
(define-module :core.collections)
|
(define-module :core.collections)
|
||||||
|
|
||||||
(define-primitive
|
(define-primitive
|
||||||
@@ -528,15 +591,15 @@
|
|||||||
:returns "list"
|
:returns "list"
|
||||||
:doc "All elements except the first.")
|
:doc "All elements except the first.")
|
||||||
|
|
||||||
|
;; --------------------------------------------------------------------------
|
||||||
|
;; Stdlib — Format
|
||||||
|
;; --------------------------------------------------------------------------
|
||||||
(define-primitive
|
(define-primitive
|
||||||
"nth"
|
"nth"
|
||||||
:params ((coll :as list) (n :as number))
|
:params ((coll :as list) (n :as number))
|
||||||
:returns "any"
|
:returns "any"
|
||||||
:doc "Element at index n, or nil if out of bounds.")
|
:doc "Element at index n, or nil if out of bounds.")
|
||||||
|
|
||||||
;; --------------------------------------------------------------------------
|
|
||||||
;; Core — Dict operations
|
|
||||||
;; --------------------------------------------------------------------------
|
|
||||||
(define-primitive
|
(define-primitive
|
||||||
"cons"
|
"cons"
|
||||||
:params (x (coll :as list))
|
:params (x (coll :as list))
|
||||||
@@ -561,6 +624,9 @@
|
|||||||
:returns "list"
|
:returns "list"
|
||||||
:doc "Return coll in reverse order.")
|
:doc "Return coll in reverse order.")
|
||||||
|
|
||||||
|
;; --------------------------------------------------------------------------
|
||||||
|
;; Stdlib — Text
|
||||||
|
;; --------------------------------------------------------------------------
|
||||||
(define-primitive
|
(define-primitive
|
||||||
"flatten"
|
"flatten"
|
||||||
:params ((coll :as list))
|
:params ((coll :as list))
|
||||||
@@ -581,21 +647,27 @@
|
|||||||
|
|
||||||
(define-module :core.dict)
|
(define-module :core.dict)
|
||||||
|
|
||||||
|
;; --------------------------------------------------------------------------
|
||||||
|
;; Stdlib — Style
|
||||||
|
;; --------------------------------------------------------------------------
|
||||||
|
;; --------------------------------------------------------------------------
|
||||||
|
;; Stdlib — Debug
|
||||||
|
;; --------------------------------------------------------------------------
|
||||||
(define-primitive
|
(define-primitive
|
||||||
"keys"
|
"keys"
|
||||||
:params ((d :as dict))
|
:params ((d :as dict))
|
||||||
:returns "list"
|
:returns "list"
|
||||||
:doc "List of dict keys.")
|
:doc "List of dict keys.")
|
||||||
|
|
||||||
;; --------------------------------------------------------------------------
|
|
||||||
;; Stdlib — Format
|
|
||||||
;; --------------------------------------------------------------------------
|
|
||||||
(define-primitive
|
(define-primitive
|
||||||
"vals"
|
"vals"
|
||||||
:params ((d :as dict))
|
:params ((d :as dict))
|
||||||
:returns "list"
|
:returns "list"
|
||||||
:doc "List of dict values.")
|
:doc "List of dict values.")
|
||||||
|
|
||||||
|
;; --------------------------------------------------------------------------
|
||||||
|
;; Type introspection — platform primitives
|
||||||
|
;; --------------------------------------------------------------------------
|
||||||
(define-primitive
|
(define-primitive
|
||||||
"merge"
|
"merge"
|
||||||
:params (&rest (dicts :as dict))
|
:params (&rest (dicts :as dict))
|
||||||
@@ -620,9 +692,6 @@
|
|||||||
:returns "dict"
|
:returns "dict"
|
||||||
:doc "Return new dict with keys removed.")
|
:doc "Return new dict with keys removed.")
|
||||||
|
|
||||||
;; --------------------------------------------------------------------------
|
|
||||||
;; Stdlib — Text
|
|
||||||
;; --------------------------------------------------------------------------
|
|
||||||
(define-primitive
|
(define-primitive
|
||||||
"dict-set!"
|
"dict-set!"
|
||||||
:params ((d :as dict) key val)
|
:params ((d :as dict) key val)
|
||||||
@@ -643,12 +712,6 @@
|
|||||||
:returns "string"
|
:returns "string"
|
||||||
:doc "Parse ISO date string and format with strftime-style format.")
|
:doc "Parse ISO date string and format with strftime-style format.")
|
||||||
|
|
||||||
;; --------------------------------------------------------------------------
|
|
||||||
;; Stdlib — Style
|
|
||||||
;; --------------------------------------------------------------------------
|
|
||||||
;; --------------------------------------------------------------------------
|
|
||||||
;; Stdlib — Debug
|
|
||||||
;; --------------------------------------------------------------------------
|
|
||||||
(define-primitive
|
(define-primitive
|
||||||
"format-decimal"
|
"format-decimal"
|
||||||
:params ((val :as number) &rest (places :as number))
|
:params ((val :as number) &rest (places :as number))
|
||||||
@@ -661,9 +724,6 @@
|
|||||||
:returns "number"
|
:returns "number"
|
||||||
:doc "Parse string to integer with optional default on failure.")
|
:doc "Parse string to integer with optional default on failure.")
|
||||||
|
|
||||||
;; --------------------------------------------------------------------------
|
|
||||||
;; Type introspection — platform primitives
|
|
||||||
;; --------------------------------------------------------------------------
|
|
||||||
(define-primitive
|
(define-primitive
|
||||||
"parse-datetime"
|
"parse-datetime"
|
||||||
:params ((s :as string))
|
:params ((s :as string))
|
||||||
|
|||||||
Reference in New Issue
Block a user