1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
open Ast
(*
--# Create a vector of ones
--#
--# Creates a vector of length n filled with 1.0.
--# Use with `seq` or `ndarray` for more complex interactions.
--#
--# @name iota
--# @param n :: Int The length of the vector.
--# @return :: Vector[Float] A vector of ones.
--# @example
--# iota(3)
--# -- Returns = [1.0, 1.0, 1.0]
--# @family math
--# @seealso seq, ndarray
--# @export
*)
let register env =
Env.add "iota"
(make_builtin ~name:"iota" 1 (fun args _env ->
match args with
| [VInt n] ->
if n < 0 then Error.value_error "iota expects a non-negative integer."
else
let arr = Array.make n (VFloat 1.0) in
VVector arr
| _ -> Error.type_error "iota expects a single Integer argument."
))
env