spec: vector primitive — complete type signatures in spec/primitives.sx

All 10 vector primitives now have :as type annotations on every parameter,
:returns types, and :doc strings. make-vector gains optional fill annotation;
vector uses :rest for its variadic args; vector-ref/set! document bounds error.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-04-25 19:33:39 +00:00
parent d1a00562a4
commit 5a332fa430
2 changed files with 14 additions and 11 deletions

View File

@@ -170,15 +170,15 @@
(define-primitive
"make-vector"
:params ((n :as number))
:params ((n :as number) (fill :as any :optional true))
:returns "vector"
:doc "Create vector of size n, optionally filled.")
:doc "Create vector of length n, each element initialised to fill (default nil).")
(define-primitive
"vector"
:params ()
:params (:rest (elts :as any))
:returns "vector"
:doc "Create vector from arguments.")
:doc "Construct a vector from its arguments.")
(define-primitive
"vector?"
@@ -190,31 +190,31 @@
"vector-length"
:params ((v :as vector))
:returns "number"
:doc "Number of elements.")
:doc "Number of elements in vector v.")
(define-primitive
"vector-ref"
:params ((v :as vector) (i :as number))
:returns "any"
:doc "Element at index.")
:doc "Element at 0-based index i. Error if out of bounds.")
(define-primitive
"vector-set!"
:params ((v :as vector) (i :as number) (val :as any))
:returns "nil"
:doc "Set element at index.")
:doc "Mutate element at index i to val. Error if out of bounds.")
(define-primitive
"vector->list"
:params ((v :as vector))
:returns "list"
:doc "Convert vector to list.")
:doc "Convert vector to a fresh list.")
(define-primitive
"list->vector"
:params ((l :as list))
:returns "vector"
:doc "Convert list to vector.")
:doc "Convert list to a fresh vector.")
;; --------------------------------------------------------------------------
;; Core — Predicates
@@ -223,7 +223,7 @@
"vector-fill!"
:params ((v :as vector) (val :as any))
:returns "nil"
:doc "Fill all elements.")
:doc "Set every element of v to val in place.")
(define-primitive
"vector-copy"