--- Title: A Standard Library Prev: Advanced Topics Next: Complete Trait Reference --- ## Appendix A: Standard Library This appendix provides a complete alphabetical reference of all standard library functions and operations. ### Standard Library Categories **Array Operations**: [at](#at), [concat](#concat), [each](#each), [enumerate](#enumerate), [filter](#filter), [foldl](#foldl), [foldr](#foldr), [length](#length), [map](#map), [mean](#mean), [reduce](#reduce), [reverse](#reverse), [shape](#shape), [slice](#slice), [sum](#sum), [transpose](#transpose), [window](#window), [zip](#zip) **I/O Operations**: [input](#input), [print](#print), [read](#read), [write](#write) **String Operations**: [concat](#concat), [ends_with](#ends_with), [find](#find), [format](#format), [join](#join), [length](#length), [replace](#replace), [split](#split), [starts_with](#starts_with), [substr](#substr), [trim](#trim) **Type Conversion**: [parse](#parse), [to_f32, to_f64](#to_f32-to_f64), [to_i8, to_i16, to_i32, to_i64](#to_i8-to_i16-to_i32-to_i64), [to_str](#to_str), [to_u8, to_u16, to_u32, to_u64](#to_u8-to_u16-to_u32-to_u64) **Utility Operations**: [assert](#assert), [implements](#implements), [type_of](#type_of) ### Alphabetical Reference #### abs **Signature**: `(Math -- Math)` **Trait**: Math **Description**: Return the absolute value of a number. **Example**: ``` -42 abs // Returns 42 3.14 abs // Returns 3.14 ``` **See Also**: [min](#min), [max](#max) #### acos **Signature**: `(Math -- Math)` **Trait**: Math **Description**: Calculate arc cosine (inverse cosine) in radians. **Example**: ``` 1.0 acos // Returns 0.0 0.0 acos // Returns ~1.5708 (pi/2) ``` **See Also**: [cos](#cos), [asin](#asin), [atan](#atan) #### asin **Signature**: `(Math -- Math)` **Trait**: Math **Description**: Calculate arc sine (inverse sine) in radians. **Example**: ``` 1.0 asin // Returns ~1.5708 (pi/2) 0.0 asin // Returns 0.0 ``` **See Also**: [sin](#sin), [acos](#acos), [atan](#atan) #### assert **Signature**: `(TokenString TokenString --)` **Description**: Evaluate expression and condition, halt if condition is false. **Example**: ``` { 2 3 + } { 5 == } assert { 5 square } { 25 == } assert ``` **See Also**: [type_of](#type_of), [implements](#implements) #### at **Signature**: `(Selectable Size -- T)` **Trait**: Selectable **Description**: Access element at the given index. **Example**: ``` [10 20 30] 1 at // Returns 20 ``` **See Also**: [slice](#slice), [length](#length) #### atan **Signature**: `(Math -- Math)` **Trait**: Math **Description**: Calculate arc tangent (inverse tangent) in radians. **Example**: ``` 1.0 atan // Returns ~0.7854 (pi/4) 0.0 atan // Returns 0.0 ``` **See Also**: [tan](#tan), [atan2](#atan2), [asin](#asin) #### atan2 **Signature**: `(Math Math -- Math)` **Trait**: Math **Description**: Calculate two-argument arc tangent of y/x in radians, using signs to determine quadrant. **Example**: ``` 1.0 1.0 atan2 // Returns ~0.7854 (pi/4) 1.0 0.0 atan2 // Returns ~1.5708 (pi/2) ``` **See Also**: [atan](#atan), [tan](#tan) #### ceil **Signature**: `(Math -- Math)` **Trait**: Math **Description**: Round number up to nearest integer. **Example**: ``` 3.14 ceil // Returns 4.0 -2.7 ceil // Returns -2.0 ``` **See Also**: [floor](#floor), [round](#round) #### concat **Signature**: `(Concatenable Concatenable -- Concatenable)` **Trait**: Concatenable **Description**: Concatenate two containers or strings. **Example**: ``` [1 2 3] [4 5 6] concat // Returns [1 2 3 4 5 6] "hello" " world" concat // Returns "hello world" ``` **See Also**: [join](#join), [split](#split) #### cos **Signature**: `(Math -- Math)` **Trait**: Math **Description**: Calculate cosine of angle in radians. **Example**: ``` 0.0 cos // Returns 1.0 3.14159 cos // Returns ~-1.0 ``` **See Also**: [sin](#sin), [tan](#tan), [acos](#acos) #### depth **Signature**: `(-- Size)` **Trait**: Stackable **Description**: Push current stack depth onto the stack. **Example**: ``` 1 2 3 depth // Returns 1 2 3 3 ``` **See Also**: [pick](#pick), [roll](#roll) #### drop **Signature**: `(Self --)` **Trait**: Stackable **Description**: Remove and discard the top item from the stack. **Example**: ``` 5 10 drop // Returns 5 ``` **See Also**: [dup](#dup), [swap](#swap) #### dup **Signature**: `(Self -- Self Self)` **Trait**: Stackable **Description**: Duplicate the top item on the stack. **Example**: ``` 5 dup // Returns 5 5 ``` **See Also**: [drop](#drop), [over](#over) #### each **Signature**: `(ArrayOf TokenString --)` **Description**: Apply function to each element (side effects). **Example**: ``` [1 2 3] { print } each // Prints 1, 2, 3 ``` **See Also**: [map](#map), [filter](#filter) #### ends_with **Signature**: `(String String -- bool)` **Trait**: String **Description**: Check if string ends with given suffix. **Example**: ``` "hello" "lo" ends_with // Returns true "hello" "he" ends_with // Returns false ``` **See Also**: [starts_with](#starts_with), [find](#find) #### enumerate **Signature**: `(ArrayOf -- ArrayOf>)` **Description**: Add indices to array elements. **Example**: ``` ["a" "b" "c"] enumerate // Returns [[0 "a"] [1 "b"] [2 "c"]] ``` **See Also**: [zip](#zip), [map](#map) #### eval **Signature**: `(TokenString --)` **Trait**: Implementable **Description**: Parse and execute TokenString as code. **Example**: ``` "2 3 +" eval // Returns 5 ``` **See Also**: [lambda](#lambda) #### filter **Signature**: `(ArrayOf TokenString -- ArrayOf)` **Description**: Keep only elements matching predicate. **Example**: ``` [1 2 3 4 5] { 2 % 0 == } filter // Returns [2 4] ``` **See Also**: [map](#map), [reduce](#reduce) #### find **Signature**: `(String String -- Option)` **Trait**: String **Description**: Find position of substring, returns Option::Some(index) or Option::None. **Example**: ``` "hello world" "world" find // Returns Option::Some(6) "hello world" "xyz" find // Returns Option::None ``` **See Also**: [starts_with](#starts_with), [ends_with](#ends_with) #### floor **Signature**: `(Math -- Math)` **Trait**: Math **Description**: Round number down to nearest integer. **Example**: ``` 3.14 floor // Returns 3.0 -2.7 floor // Returns -3.0 ``` **See Also**: [ceil](#ceil), [round](#round) #### foldl **Signature**: `(ArrayOf U TokenString -- U)` **Description**: Left fold array with accumulator function. **Example**: ``` [1 2 3 4] 0 { + } foldl // Returns 10 ``` **See Also**: [foldr](#foldr), [reduce](#reduce) #### foldr **Signature**: `(ArrayOf U TokenString -- U)` **Description**: Right fold array with accumulator function. **Example**: ``` [1 2 3 4] 0 { + } foldr // Returns 10 ``` **See Also**: [foldl](#foldl), [reduce](#reduce) #### format **Signature**: `(String Iterable -- String)` **Trait**: String **Description**: Format string with values, replacing %d, %s, %f placeholders. **Example**: ``` "x=%d, y=%d" [5 10] format // Returns "x=5, y=10" "Hello %s" ["World"] format // Returns "Hello World" ``` **See Also**: [to_str](#to_str), [concat](#concat) #### implements **Signature**: `(Self Identifier -- bool)` **Description**: Check if value's type implements a specific trait. **Example**: ``` 42 ::Addable implements // Returns true "hello" ::String implements // Returns true ``` **See Also**: [type_of](#type_of), [assert](#assert) #### input **Signature**: `(String -- String)` **Description**: Print prompt and read line from stdin. **Example**: ``` "Enter name: " input // Prompts and returns user input ``` **See Also**: [print](#print), [read](#read) #### join **Signature**: `(ArrayOf String -- String)` **Description**: Join array of strings with delimiter. **Example**: ``` ["a" "b" "c"] "," join // Returns "a,b,c" ``` **See Also**: [split](#split), [concat](#concat) #### lambda **Signature**: `(TokenString -- Callable)` **Trait**: Implementable **Description**: Convert TokenString to callable code block. **Example**: ``` { dup * } lambda ::square swap 5 square eval // Returns 25 ``` **See Also**: [eval](#eval) #### length **Signature**: `(Sized -- i64)` **Trait**: Sized **Description**: Get the number of elements in a container. **Example**: ``` [1 2 3 4 5] length // Returns 5 "hello" length // Returns 5 ``` **See Also**: [at](#at), [slice](#slice) #### map **Signature**: `(ArrayOf TokenString -- ArrayOf)` **Description**: Transform each element with function. **Example**: ``` [1 2 3 4] { 2 * } map // Returns [2 4 6 8] ``` **See Also**: [filter](#filter), [reduce](#reduce), [each](#each) #### max **Signature**: `(Math Math -- Math)` **Trait**: Math **Description**: Return the maximum of two values. **Example**: ``` 3 5 max // Returns 5 -2 1 max // Returns 1 ``` **See Also**: [min](#min), [abs](#abs) #### mean **Signature**: `(ArrayOf -- f64)` **Description**: Calculate the average of numeric array elements. **Example**: ``` [1 2 3 4 5] mean // Returns 3.0 ``` **See Also**: [sum](#sum), [reduce](#reduce) #### min **Signature**: `(Math Math -- Math)` **Trait**: Math **Description**: Return the minimum of two values. **Example**: ``` 3 5 min // Returns 3 -2 1 min // Returns -2 ``` **See Also**: [max](#max), [abs](#abs) #### over **Signature**: `(Self Self -- Self Self Self)` **Trait**: Stackable **Description**: Copy the second item to the top of the stack. **Example**: ``` 5 10 over // Returns 5 10 5 ``` **See Also**: [dup](#dup), [swap](#swap), [rot](#rot) #### parse **Signature**: `(String -- Parseable)` **Trait**: Parseable **Description**: Parse string to value of inferred type. **Example**: ``` "123" parse // Returns 123 (as appropriate numeric type) ``` **See Also**: [to_str](#to_str) #### pick **Signature**: `(Size -- Self)` **Trait**: Stackable **Description**: Copy nth item to top (0 = top, 1 = second, etc.). **Example**: ``` 1 2 3 4 2 pick // Returns 1 2 3 4 2 ``` **See Also**: [roll](#roll), [depth](#depth) #### print **Signature**: `(Stringifiable --)` **Description**: Print value to stdout. **Example**: ``` "Hello" print // Prints: Hello 42 print // Prints: 42 ``` **See Also**: [input](#input), [to_str](#to_str) #### rand **Signature**: `(-- f64)` **Description**: Generate random f64 in range [0.0, 1.0). **Example**: ``` rand // Returns 0.7234... (random value) 100 rand * // Random value 0.0-99.999... ``` **See Also**: [seed](#seed) #### read **Signature**: `(String -- String)` **Description**: Read file contents as string. **Example**: ``` "file.txt" read // Returns file contents ``` **See Also**: [write](#write) #### reduce **Signature**: `(ArrayOf T TokenString -- T)` **Description**: Fold array with accumulator function. **Example**: ``` [1 2 3 4] 0 { + } reduce // Returns 10 ``` **See Also**: [map](#map), [filter](#filter), [foldl](#foldl) #### replace **Signature**: `(String String String -- String)` **Trait**: String **Description**: Replace all occurrences of substring with replacement. **Example**: ``` "hello world" "world" "Stack" replace // Returns "hello Stack" ``` **See Also**: [split](#split), [concat](#concat) #### reverse **Signature**: `(ArrayOf -- ArrayOf)` **Description**: Reverse order of array elements. **Example**: ``` [1 2 3] reverse // Returns [3 2 1] ``` **See Also**: [transpose](#transpose) #### roll **Signature**: `(Size Size --)` **Trait**: Stackable **Description**: Rotate n items, times times. **Example**: ``` 1 2 3 4 3 1 roll // Rotates top 3 once: 1 3 4 2 ``` **See Also**: [rot](#rot), [pick](#pick) #### rot **Signature**: `(Self Self Self -- Self Self Self)` **Trait**: Stackable **Description**: Rotate the top three items. **Example**: ``` 1 2 3 rot // Returns 2 3 1 ``` **See Also**: [swap](#swap), [roll](#roll) #### round **Signature**: `(Math -- Math)` **Trait**: Math **Description**: Round number to nearest integer. **Example**: ``` 3.14 round // Returns 3.0 3.7 round // Returns 4.0 ``` **See Also**: [floor](#floor), [ceil](#ceil) #### seed **Signature**: `(u64 --)` **Description**: Seed the random number generator with specific value. **Example**: ``` 12345 seed // Seed RNG for deterministic results rand // Returns deterministic value ``` **See Also**: [rand](#rand) #### sin **Signature**: `(Math -- Math)` **Trait**: Math **Description**: Calculate sine of angle in radians. **Example**: ``` 0.0 sin // Returns 0.0 1.5708 sin // Returns ~1.0 (pi/2) ``` **See Also**: [cos](#cos), [tan](#tan), [asin](#asin) #### slice **Signature**: `(Sliceable Size Size -- Sliceable)` **Trait**: Sliceable **Description**: Extract elements from start to end index. **Example**: ``` [10 20 30 40] 1 3 slice // Returns [20 30] ``` **See Also**: [at](#at), [length](#length) #### split **Signature**: `(String String -- ArrayOf)` **Trait**: String **Description**: Split string by delimiter. **Example**: ``` "a,b,c" "," split // Returns ["a" "b" "c"] ``` **See Also**: [join](#join), [substr](#substr) #### sqrt **Signature**: `(Math -- Math)` **Trait**: Math **Description**: Calculate square root. **Example**: ``` 16 sqrt // Returns 4.0 2.0 sqrt // Returns ~1.414 ``` **See Also**: [^](#operator-exponent) #### starts_with **Signature**: `(String String -- bool)` **Trait**: String **Description**: Check if string starts with given prefix. **Example**: ``` "hello" "hel" starts_with // Returns true "hello" "lo" starts_with // Returns false ``` **See Also**: [ends_with](#ends_with), [find](#find) #### substr **Signature**: `(String Size Size -- String)` **Trait**: String **Description**: Extract substring from start to end index. **Example**: ``` "hello" 1 3 substr // Returns "el" ``` **See Also**: [slice](#slice), [split](#split) #### sum **Signature**: `(ArrayOf -- Number)` **Description**: Sum all numeric elements in array. **Example**: ``` [1 2 3 4 5] sum // Returns 15 ``` **See Also**: [mean](#mean), [reduce](#reduce) #### swap **Signature**: `(Self Self -- Self Self)` **Trait**: Stackable **Description**: Swap the top two items on the stack. **Example**: ``` 5 10 swap // Returns 10 5 ``` **See Also**: [dup](#dup), [rot](#rot) #### tan **Signature**: `(Math -- Math)` **Trait**: Math **Description**: Calculate tangent of angle in radians. **Example**: ``` 0.0 tan // Returns 0.0 0.7854 tan // Returns ~1.0 (pi/4) ``` **See Also**: [sin](#sin), [cos](#cos), [atan](#atan) #### to_f32, to_f64 **Signature**: `(Convertible -- f32/f64)` **Trait**: Convertible **Description**: Convert value to 32-bit or 64-bit float. **Example**: ``` 42 to_f64 // Returns 42.0 ``` **See Also**: [to_i8, to_i16, to_i32, to_i64](#to_i8-to_i16-to_i32-to_i64), [to_u8, to_u16, to_u32, to_u64](#to_u8-to_u16-to_u32-to_u64) #### to_i8, to_i16, to_i32, to_i64 **Signature**: `(Convertible -- i8/i16/i32/i64)` **Trait**: Convertible **Description**: Convert value to signed integer type. **Example**: ``` 3.14 to_i32 // Returns 3 (truncates) ``` **See Also**: [to_u8, to_u16, to_u32, to_u64](#to_u8-to_u16-to_u32-to_u64), [to_f32, to_f64](#to_f32-to_f64) #### to_str **Signature**: `(Stringifiable -- String)` **Trait**: Stringifiable **Description**: Convert value to string representation. **Example**: ``` 42 to_str // Returns "42" ``` **See Also**: [parse](#parse), [print](#print) #### to_u8, to_u16, to_u32, to_u64 **Signature**: `(Convertible -- u8/u16/u32/u64)` **Trait**: Convertible **Description**: Convert value to unsigned integer type. **Example**: ``` 42 to_u32 // Returns 42 (as u32) ``` **See Also**: [to_i8, to_i16, to_i32, to_i64](#to_i8-to_i16-to_i32-to_i64), [to_f32, to_f64](#to_f32-to_f64) #### transpose **Signature**: `(ArrayOf> -- ArrayOf>)` **Description**: Transpose a 2D array (swap rows and columns). **Example**: ``` [[1 2] [3 4]] transpose // Returns [[1 3] [2 4]] ``` **See Also**: [reverse](#reverse) #### trim **Signature**: `(String -- String)` **Trait**: String **Description**: Remove leading and trailing whitespace. **Example**: ``` " hello " trim // Returns "hello" ``` **See Also**: [split](#split), [replace](#replace) #### type_of **Signature**: `(Self -- Identifier)` **Description**: Return the type of a value as an identifier literal. **Example**: ``` 42 type_of // Returns ::i64 "hello" type_of // Returns ::String ``` **See Also**: [implements](#implements), [assert](#assert) #### window **Signature**: `(ArrayOf Size -- ArrayOf>)` **Description**: Create sliding windows of given size. **Example**: ``` [1 2 3 4] 2 window // Returns [[1 2] [2 3] [3 4]] ``` **See Also**: [slice](#slice) #### write **Signature**: `(String String --)` **Description**: Write string to file. **Example**: ``` "data" "file.txt" write // Writes "data" to file.txt ``` **See Also**: [read](#read) #### zip **Signature**: `(ArrayOf ArrayOf -- ArrayOf>)` **Description**: Combine two arrays element-wise into pairs. **Example**: ``` [1 2 3] [4 5 6] zip // Returns [[1 4] [2 5] [3 6]] ``` **See Also**: [enumerate](#enumerate), [map](#map) ---