--- Title: C Complete Operator Reference Prev: Complete Trait Reference Next: Grammar Summary --- ## Appendix C: Complete Operator Reference This appendix provides a complete alphabetical reference of all operators in the language. ### Operator List `!=`, `%`, `*`, `+`, `-`, `/`, `<`, `<=`, `==`, `>`, `>=`, `^`, `abs`, `acos`, `asin`, `assert`, `at`, `atan`, `atan2`, `bitand`, `bitnot`, `bitor`, `bitxor`, `break`, `ceil`, `concat`, `continue`, `cos`, `depth`, `drop`, `dup`, `each`, `ends_with`, `enum`, `enumerate`, `eval`, `filter`, `find`, `floor`, `foldl`, `foldr`, `for`, `format`, `get`, `if`, `impl`, `implements`, `inher`, `lambda`, `length`, `ln`, `log`, `logb`, `map`, `match`, `max`, `mean`, `min`, `not`, `or`, `over`, `pick`, `rand`, `reduce`, `replace`, `reverse`, `roll`, `rot`, `round`, `seed`, `set`, `shl`, `shr`, `sin`, `slice`, `split`, `sqrt`, `starts_with`, `struct`, `substr`, `sum`, `swap`, `tan`, `trait`, `transpose`, `trim`, `type_of`, `union`, `while`, `window`, `zip` ### Alphabetical Operator Reference #### != **Operator Type**: Comparison **Signature**: `(Equatable Equatable -- bool)` **Trait**: Equatable **Description**: Test if two values are not equal. **Example**: `5 3 != // => true` **See Also**: ==, <, > **Section**: 4.3 (Comparison Operators) #### % **Operator Type**: Arithmetic **Signature**: `(Multiplyable Multiplyable -- Multiplyable)` **Trait**: Multiplyable **Description**: Remainder after division (modulo). **Example**: `17 5 % // => 2` **See Also**: /, * **Section**: 4.2 (Arithmetic Operators) #### * **Operator Type**: Arithmetic **Signature**: `(Multiplyable Multiplyable -- Multiplyable)` **Trait**: Multiplyable **Description**: Multiply two values. **Example**: `5 6 * // => 30` **See Also**: /, +, - **Section**: 4.2 (Arithmetic Operators) #### + **Operator Type**: Arithmetic **Signature**: `(Addable Addable -- Addable)` **Trait**: Addable **Description**: Add two values. **Example**: `3 4 + // => 7` **See Also**: -, *, / **Section**: 4.2 (Arithmetic Operators) #### - **Operator Type**: Arithmetic **Signature**: `(Addable Addable -- Addable)` **Trait**: Addable **Description**: Subtract second value from first. **Example**: `10 3 - // => 7` **See Also**: +, *, / **Section**: 4.2 (Arithmetic Operators) #### / **Operator Type**: Arithmetic **Signature**: `(Multiplyable Multiplyable -- Multiplyable)` **Trait**: Multiplyable **Description**: Divide first value by second. **Example**: `20 4 / // => 5` **See Also**: *, %, + **Section**: 4.2 (Arithmetic Operators) #### < **Operator Type**: Comparison **Signature**: `(Orderable Orderable -- bool)` **Trait**: Orderable **Description**: True if first value is less than second. **Example**: `3 5 < // => true` **See Also**: <=, >, >= **Section**: 4.3 (Comparison Operators) #### <= **Operator Type**: Comparison **Signature**: `(Orderable Orderable -- bool)` **Trait**: Orderable **Description**: True if first value is less than or equal to second. **Example**: `5 5 <= // => true` **See Also**: <, >, >= **Section**: 4.3 (Comparison Operators) #### == **Operator Type**: Comparison **Signature**: `(Equatable Equatable -- bool)` **Trait**: Equatable **Description**: Test if two values are equal. **Example**: `5 5 == // => true` **See Also**: !=, <, > **Section**: 4.3 (Comparison Operators) #### > **Operator Type**: Comparison **Signature**: `(Orderable Orderable -- bool)` **Trait**: Orderable **Description**: True if first value is greater than second. **Example**: `5 3 > // => true` **See Also**: >=, <, <= **Section**: 4.3 (Comparison Operators) #### >= **Operator Type**: Comparison **Signature**: `(Orderable Orderable -- bool)` **Trait**: Orderable **Description**: True if first value is greater than or equal to second. **Example**: `5 5 >= // => true` **See Also**: >, <, <= **Section**: 4.3 (Comparison Operators) #### ^ **Operator Type**: Arithmetic **Signature**: `(Exponentiable Exponentiable -- Exponentiable)` **Trait**: Exponentiable **Description**: Raise first value to power of second (exponentiation). **Example**: `2 8 ^ // => 256` **See Also**: log, ln, sqrt **Section**: 4.2 (Arithmetic Operators) #### abs **Operator Type**: Mathematical **Signature**: `(Math -- Math)` **Trait**: Math **Description**: Return absolute value of number. **Example**: `-42 abs // => 42` **See Also**: min, max **Section**: 4.2 (Arithmetic Operators) #### acos **Operator Type**: Mathematical **Signature**: `(Math -- Math)` **Trait**: Math **Description**: Calculate arc cosine in radians. **Example**: `1.0 acos // => 0.0` **See Also**: cos, asin, atan **Section**: 4.2 (Arithmetic Operators) #### and **Operator Type**: Logical **Signature**: `(Logical Logical -- Logical)` **Trait**: Logical **Description**: Logical AND - returns first if falsy, else second. **Example**: `true false and // => false` **See Also**: or, not **Section**: 4.4 (Logical Operators) #### asin **Operator Type**: Mathematical **Signature**: `(Math -- Math)` **Trait**: Math **Description**: Calculate arc sine in radians. **Example**: `1.0 asin // => ~1.5708` **See Also**: sin, acos, atan **Section**: 4.2 (Arithmetic Operators) #### assert **Operator Type**: Testing **Signature**: `(TokenString TokenString --)` **Description**: Evaluate expression and condition, halt if condition is false. **Example**: `{ 2 3 + } { 5 == } assert` **See Also**: type_of, implements **Section**: 11.3 (Testing and Assertions) #### at **Operator Type**: Container Access **Signature**: `(Selectable Size -- T)` **Trait**: Selectable **Description**: Access element at given index. **Example**: `[10 20 30] 1 at // => 20` **See Also**: slice, length **Section**: 7.4 (Arrays) #### atan **Operator Type**: Mathematical **Signature**: `(Math -- Math)` **Trait**: Math **Description**: Calculate arc tangent in radians. **Example**: `1.0 atan // => ~0.7854` **See Also**: tan, atan2, asin **Section**: 4.2 (Arithmetic Operators) #### atan2 **Operator Type**: Mathematical **Signature**: `(Math Math -- Math)` **Trait**: Math **Description**: Two-argument arc tangent using signs to determine quadrant. **Example**: `1.0 1.0 atan2 // => ~0.7854` **See Also**: atan, tan **Section**: 4.2 (Arithmetic Operators) #### bitand **Operator Type**: Bitwise **Signature**: `(Bitwise Bitwise -- Bitwise)` **Trait**: Bitwise **Description**: Bitwise AND of two values. **Example**: `0xFF 0x0F bitand // => 0x0F` **See Also**: bitor, bitxor, bitnot **Section**: 4.5 (Bitwise Operators) #### bitnot **Operator Type**: Bitwise **Signature**: `(Bitwise -- Bitwise)` **Trait**: Bitwise **Description**: Bitwise NOT (complement) of value. **Example**: `0xFF bitnot // => (inverted bits)` **See Also**: bitand, bitor, bitxor **Section**: 4.5 (Bitwise Operators) #### bitor **Operator Type**: Bitwise **Signature**: `(Bitwise Bitwise -- Bitwise)` **Trait**: Bitwise **Description**: Bitwise OR of two values. **Example**: `0xF0 0x0F bitor // => 0xFF` **See Also**: bitand, bitxor, bitnot **Section**: 4.5 (Bitwise Operators) #### bitxor **Operator Type**: Bitwise **Signature**: `(Bitwise Bitwise -- Bitwise)` **Trait**: Bitwise **Description**: Bitwise XOR of two values. **Example**: `0xFF 0x0F bitxor // => 0xF0` **See Also**: bitand, bitor, bitnot **Section**: 4.5 (Bitwise Operators) #### break **Operator Type**: Control Flow **Signature**: `(--)` **Description**: Exit the current loop immediately. **Example**: `{ true } { condition { break } { } if } while` **See Also**: continue, while, for **Section**: 6.4 (Loop Control) #### ceil **Operator Type**: Mathematical **Signature**: `(Math -- Math)` **Trait**: Math **Description**: Round number up to nearest integer. **Example**: `3.14 ceil // => 4.0` **See Also**: floor, round **Section**: 4.2 (Arithmetic Operators) #### concat **Operator Type**: Container **Signature**: `(Concatenable Concatenable -- Concatenable)` **Trait**: Concatenable **Description**: Concatenate two containers or strings. **Example**: `[1 2 3] [4 5 6] concat // => [1 2 3 4 5 6]` **See Also**: slice, reverse **Section**: 7.4 (Arrays) #### continue **Operator Type**: Control Flow **Signature**: `(--)` **Description**: Skip to the next iteration of the current loop. **Example**: `1 10 { dup 2 % 0 == { continue } { print } if } for` **See Also**: break, while, for **Section**: 6.4 (Loop Control) #### cos **Operator Type**: Mathematical **Signature**: `(Math -- Math)` **Trait**: Math **Description**: Calculate cosine of angle in radians. **Example**: `0.0 cos // => 1.0` **See Also**: sin, tan, acos **Section**: 4.2 (Arithmetic Operators) #### depth **Operator Type**: Stack Manipulation **Signature**: `(-- Size)` **Trait**: Stackable **Description**: Push current stack depth onto the stack. **Example**: `1 2 3 depth // => 1 2 3 3` **See Also**: pick, roll **Section**: 4.1 (Stack Operations) #### drop **Operator Type**: Stack Manipulation **Signature**: `(Self --)` **Trait**: Stackable **Description**: Remove and discard the top item from the stack. **Example**: `5 10 drop // => 5` **See Also**: dup, swap **Section**: 4.1 (Stack Operations) #### dup **Operator Type**: Stack Manipulation **Signature**: `(Self -- Self Self)` **Trait**: Stackable **Description**: Duplicate the top item on the stack. **Example**: `5 dup // => 5 5` **See Also**: drop, over **Section**: 4.1 (Stack Operations) #### each **Operator Type**: Array Combinator **Signature**: `(ArrayOf TokenString --)` **Description**: Apply function to each element (side effects). **Example**: `[1 2 3] { print } each` **See Also**: map, filter, reduce **Section**: 7.4 (Arrays) #### ends_with **Operator Type**: String **Signature**: `(String String -- bool)` **Trait**: String **Description**: Check if string ends with given suffix. **Example**: `"hello" "lo" ends_with // => true` **See Also**: starts_with, find **Section**: 11.5 (String Operations) #### enum **Operator Type**: Definition **Signature**: `(TokenString Identifier --)` **Trait**: Implementable **Description**: Define an enumeration type. **Example**: `{ Pending: Active: Complete: } ::Status enum` **See Also**: struct, union, trait **Section**: 7.3 (Enums) #### enumerate **Operator Type**: Array **Signature**: `(ArrayOf -- ArrayOf>)` **Description**: Add indices to array elements. **Example**: `["a" "b" "c"] enumerate // => [[0 "a"] [1 "b"] [2 "c"]]` **See Also**: zip, map **Section**: 7.4 (Arrays) #### eval **Operator Type**: Meta **Signature**: `(TokenString --)` **Trait**: Implementable **Description**: Parse and execute TokenString as code. **Example**: `"2 3 +" eval // => 5` **See Also**: lambda **Section**: 11.1 (Dynamic Code Evaluation) #### filter **Operator Type**: Array Combinator **Signature**: `(ArrayOf TokenString -- ArrayOf)` **Description**: Keep only elements matching predicate. **Example**: `[1 2 3 4 5] { 2 % 0 == } filter // => [2 4]` **See Also**: map, reduce, each **Section**: 7.4 (Arrays) #### find **Operator Type**: String **Signature**: `(String String -- Option)` **Trait**: String **Description**: Find position of substring. **Example**: `"hello world" "world" find // => Option::Some(6)` **See Also**: starts_with, ends_with **Section**: 11.5 (String Operations) #### floor **Operator Type**: Mathematical **Signature**: `(Math -- Math)` **Trait**: Math **Description**: Round number down to nearest integer. **Example**: `3.14 floor // => 3.0` **See Also**: ceil, round **Section**: 4.2 (Arithmetic Operators) #### fn **Operator Type**: Definition **Signature**: `(TypeTuple TokenString Identifier --)` **Trait**: Implementable **Description**: Define a function. **Example**: `(Number -- Number) { dup * } ::square fn` **See Also**: lambda, trait, impl **Section**: 5.2 (Defining Functions) #### foldl **Operator Type**: Array Combinator **Signature**: `(ArrayOf U TokenString -- U)` **Description**: Left fold array with accumulator function. **Example**: `[1 2 3 4] 0 { + } foldl // => 10` **See Also**: foldr, reduce **Section**: 7.4 (Arrays) #### foldr **Operator Type**: Array Combinator **Signature**: `(ArrayOf U TokenString -- U)` **Description**: Right fold array with accumulator function. **Example**: `[1 2 3 4] 0 { + } foldr // => 10` **See Also**: foldl, reduce **Section**: 7.4 (Arrays) #### for **Operator Type**: Control Flow **Signature**: `(Size Size TokenString --)` **Description**: Loop from start to end, pushing counter each iteration. **Example**: `1 10 { dup print } for` **See Also**: while, break, continue **Section**: 6.3 (For Loops) #### format **Operator Type**: String **Signature**: `(String Iterable -- String)` **Trait**: String **Description**: Format string with values, replacing placeholders. **Example**: `"x=%d, y=%d" [5 10] format // => "x=5, y=10"` **See Also**: to_str, concat **Section**: 11.5 (String Operations) #### get **Operator Type**: Struct Access **Signature**: `(Struct Identifier -- FieldValue)` **Description**: Get field value from struct (consumes struct and field identifier). **Example**: `point ::x get` **See Also**: set **Section**: 7.1 (Structs) #### if **Operator Type**: Control Flow **Signature**: `(bool TokenString TokenString --)` **Description**: Conditional execution - execute first block if true, second if false. **Example**: `x 0 > { "positive" print } { "negative" print } if` **See Also**: match, while **Section**: 6.1 (Conditionals) #### impl **Operator Type**: Definition **Signature**: `(Identifier TokenString Identifier --)` **Trait**: Implementable **Description**: Implement a trait for a type. **Example**: `::Addable { ... } ::Point impl` **See Also**: trait, inher **Section**: 9.3 (Implementing Traits) #### implements **Operator Type**: Reflection **Signature**: `(Self Identifier -- bool)` **Description**: Check if value's type implements a specific trait. **Example**: `42 ::Addable implements // => true` **See Also**: type_of, assert **Section**: 11.4 (Reflection) #### inher **Operator Type**: Definition **Signature**: `(ArrayOf Identifier --)` **Trait**: Implementable **Description**: Declare trait inheritance. **Example**: `[ ::Orderable ::Equatable ] ::Comparable inher` **See Also**: trait, impl **Section**: 9.4 (Trait Inheritance) #### lambda **Operator Type**: Meta **Signature**: `(TokenString -- Callable)` **Trait**: Implementable **Description**: Convert TokenString to callable code block. **Example**: `{ dup * } lambda ::square swap` **See Also**: eval, fn **Section**: 5.6 (Lambda Functions) #### length **Operator Type**: Container **Signature**: `(Sized -- i64)` **Trait**: Sized **Description**: Get the number of elements in a container. **Example**: `[1 2 3 4 5] length // => 5` **See Also**: at, slice **Section**: 7.4 (Arrays) #### ln **Operator Type**: Arithmetic **Signature**: `(Logarithmic -- Logarithmic)` **Trait**: Logarithmic **Description**: Natural logarithm (base e). **Example**: `2.718 ln // => 1.0` **See Also**: log, logb, ^ **Section**: 4.2 (Arithmetic Operators) #### log **Operator Type**: Arithmetic **Signature**: `(Logarithmic -- Logarithmic)` **Trait**: Logarithmic **Description**: Logarithm base 10. **Example**: `100 log // => 2.0` **See Also**: ln, logb, ^ **Section**: 4.2 (Arithmetic Operators) #### logb **Operator Type**: Arithmetic **Signature**: `(Logarithmic Logarithmic -- Logarithmic)` **Trait**: Logarithmic **Description**: Logarithm with custom base. **Example**: `8 2 logb // => 3.0` **See Also**: log, ln, ^ **Section**: 4.2 (Arithmetic Operators) #### map **Operator Type**: Array Combinator **Signature**: `(ArrayOf TokenString -- ArrayOf)` **Description**: Transform each element with function. **Example**: `[1 2 3 4] { 2 * } map // => [2 4 6 8]` **See Also**: filter, reduce, each **Section**: 7.4 (Arrays) #### match **Operator Type**: Control Flow **Signature**: `(Value TokenString --)` **Description**: Pattern match value against multiple patterns. **Example**: `opt { Some(x) => { x print } None => { "Nothing" print } } match` **See Also**: if **Section**: 6.5 (Pattern Matching) #### max **Operator Type**: Mathematical **Signature**: `(Math Math -- Math)` **Trait**: Math **Description**: Return the maximum of two values. **Example**: `3 5 max // => 5` **See Also**: min, abs **Section**: 4.2 (Arithmetic Operators) #### mean **Operator Type**: Array **Signature**: `(ArrayOf -- f64)` **Description**: Calculate average of numeric array elements. **Example**: `[1 2 3 4 5] mean // => 3.0` **See Also**: sum, reduce **Section**: 7.4 (Arrays) #### min **Operator Type**: Mathematical **Signature**: `(Math Math -- Math)` **Trait**: Math **Description**: Return the minimum of two values. **Example**: `3 5 min // => 3` **See Also**: max, abs **Section**: 4.2 (Arithmetic Operators) #### not **Operator Type**: Logical **Signature**: `(Logical -- Logical)` **Trait**: Logical **Description**: Logical NOT - inverts truthiness. **Example**: `false not // => true` **See Also**: and, or **Section**: 4.4 (Logical Operators) #### or **Operator Type**: Logical **Signature**: `(Logical Logical -- Logical)` **Trait**: Logical **Description**: Logical OR - returns first if truthy, else second. **Example**: `true false or // => true` **See Also**: and, not **Section**: 4.4 (Logical Operators) #### over **Operator Type**: Stack Manipulation **Signature**: `(Self Self -- Self Self Self)` **Trait**: Stackable **Description**: Copy the second item to the top of the stack. **Example**: `5 10 over // => 5 10 5` **See Also**: dup, swap, rot **Section**: 4.1 (Stack Operations) #### pick **Operator Type**: Stack Manipulation **Signature**: `(Size -- Self)` **Trait**: Stackable **Description**: Copy nth item to top (0 = top, 1 = second, etc.). **Example**: `1 2 3 4 2 pick // => 1 2 3 4 2` **See Also**: roll, depth **Section**: 4.1 (Stack Operations) #### rand **Operator Type**: Randomness **Signature**: `(-- f64)` **Description**: Generate random f64 in range [0.0, 1.0). **Example**: `rand // => 0.7234...` **See Also**: seed **Section**: 4.6 (Randomness) #### reduce **Operator Type**: Array Combinator **Signature**: `(ArrayOf T TokenString -- T)` **Description**: Fold array with accumulator function. **Example**: `[1 2 3 4] 0 { + } reduce // => 10` **See Also**: map, filter, foldl **Section**: 7.4 (Arrays) #### replace **Operator Type**: String **Signature**: `(String String String -- String)` **Trait**: String **Description**: Replace all occurrences of substring with replacement. **Example**: `"hello world" "world" "Stack" replace // => "hello Stack"` **See Also**: split, concat **Section**: 11.5 (String Operations) #### reverse **Operator Type**: Array **Signature**: `(ArrayOf -- ArrayOf)` **Description**: Reverse order of array elements. **Example**: `[1 2 3] reverse // => [3 2 1]` **See Also**: transpose, concat **Section**: 7.4 (Arrays) #### roll **Operator Type**: Stack Manipulation **Signature**: `(Size Size --)` **Trait**: Stackable **Description**: Rotate n items, times times. **Example**: `1 2 3 4 3 1 roll // => 1 3 4 2` **See Also**: rot, pick **Section**: 4.1 (Stack Operations) #### rot **Operator Type**: Stack Manipulation **Signature**: `(Self Self Self -- Self Self Self)` **Trait**: Stackable **Description**: Rotate the top three items. **Example**: `1 2 3 rot // => 2 3 1` **See Also**: swap, roll **Section**: 4.1 (Stack Operations) #### round **Operator Type**: Mathematical **Signature**: `(Math -- Math)` **Trait**: Math **Description**: Round number to nearest integer. **Example**: `3.7 round // => 4.0` **See Also**: floor, ceil **Section**: 4.2 (Arithmetic Operators) #### seed **Operator Type**: Randomness **Signature**: `(u64 --)` **Description**: Seed the random number generator with specific value. **Example**: `12345 seed` **See Also**: rand **Section**: 4.6 (Randomness) #### set **Operator Type**: Struct Access **Signature**: `(Value Identifier -- Struct)` **Description**: Set field value in struct (consumes value and field identifier). **Example**: `15.0 ::x set` **See Also**: get **Section**: 7.1 (Structs) #### shl **Operator Type**: Bitwise **Signature**: `(Bitwise Size -- Bitwise)` **Trait**: Bitwise **Description**: Shift bits left by n positions. **Example**: `4 2 shl // => 16` **See Also**: shr, bitand, bitor **Section**: 4.5 (Bitwise Operators) #### shr **Operator Type**: Bitwise **Signature**: `(Bitwise Size -- Bitwise)` **Trait**: Bitwise **Description**: Shift bits right by n positions. **Example**: `16 2 shr // => 4` **See Also**: shl, bitand, bitor **Section**: 4.5 (Bitwise Operators) #### sin **Operator Type**: Mathematical **Signature**: `(Math -- Math)` **Trait**: Math **Description**: Calculate sine of angle in radians. **Example**: `0.0 sin // => 0.0` **See Also**: cos, tan, asin **Section**: 4.2 (Arithmetic Operators) #### slice **Operator Type**: Container **Signature**: `(Sliceable Size Size -- Sliceable)` **Trait**: Sliceable **Description**: Extract elements from start to end index. **Example**: `[10 20 30 40] 1 3 slice // => [20 30]` **See Also**: at, length **Section**: 7.4 (Arrays) #### split **Operator Type**: String **Signature**: `(String String -- ArrayOf)` **Trait**: String **Description**: Split string by delimiter. **Example**: `"a,b,c" "," split // => ["a" "b" "c"]` **See Also**: join, substr **Section**: 11.5 (String Operations) #### sqrt **Operator Type**: Mathematical **Signature**: `(Math -- Math)` **Trait**: Math **Description**: Calculate square root. **Example**: `16 sqrt // => 4.0` **See Also**: ^ **Section**: 4.2 (Arithmetic Operators) #### starts_with **Operator Type**: String **Signature**: `(String String -- bool)` **Trait**: String **Description**: Check if string starts with given prefix. **Example**: `"hello" "hel" starts_with // => true` **See Also**: ends_with, find **Section**: 11.5 (String Operations) #### struct **Operator Type**: Definition **Signature**: `(TypeTuple TokenString Identifier --)` **Trait**: Implementable **Description**: Define a struct type. **Example**: `(T T --) { x: y: } ::Point struct` **See Also**: union, enum, get, set **Section**: 7.1 (Structs) #### substr **Operator Type**: String **Signature**: `(String Size Size -- String)` **Trait**: String **Description**: Extract substring from start to end index. **Example**: `"hello" 1 3 substr // => "el"` **See Also**: slice, split **Section**: 11.5 (String Operations) #### sum **Operator Type**: Array **Signature**: `(ArrayOf -- Number)` **Description**: Sum all numeric elements in array. **Example**: `[1 2 3 4 5] sum // => 15` **See Also**: mean, reduce **Section**: 7.4 (Arrays) #### swap **Operator Type**: Stack Manipulation **Signature**: `(Self Self -- Self Self)` **Trait**: Stackable **Description**: Swap the top two items on the stack. **Example**: `5 10 swap // => 10 5` **See Also**: dup, rot **Section**: 4.1 (Stack Operations) #### tan **Operator Type**: Mathematical **Signature**: `(Math -- Math)` **Trait**: Math **Description**: Calculate tangent of angle in radians. **Example**: `0.0 tan // => 0.0` **See Also**: sin, cos, atan **Section**: 4.2 (Arithmetic Operators) #### trait **Operator Type**: Definition **Signature**: `(TokenString Identifier --)` **Trait**: Implementable **Description**: Define a new trait. **Example**: `{ (Self -- ) draw: } ::Drawable trait` **See Also**: impl, inher **Section**: 9.2 (Defining Traits) #### transpose **Operator Type**: Array **Signature**: `(ArrayOf> -- ArrayOf>)` **Description**: Transpose a 2D array (swap rows and columns). **Example**: `[[1 2] [3 4]] transpose // => [[1 3] [2 4]]` **See Also**: reverse **Section**: 7.4 (Arrays) #### trim **Operator Type**: String **Signature**: `(String -- String)` **Trait**: String **Description**: Remove leading and trailing whitespace. **Example**: `" hello " trim // => "hello"` **See Also**: split, replace **Section**: 11.5 (String Operations) #### type_of **Operator Type**: Reflection **Signature**: `(Self -- Identifier)` **Description**: Return the type of a value as an identifier literal. **Example**: `42 type_of // => ::i64` **See Also**: implements, assert **Section**: 11.4 (Reflection) #### union **Operator Type**: Definition **Signature**: `(TypeTuple TokenString Identifier --)` **Trait**: Implementable **Description**: Define a union type with tagged variants. **Example**: `(T --) { Some(T) None } ::Option union` **See Also**: struct, enum, match **Section**: 7.2 (Unions) #### while **Operator Type**: Control Flow **Signature**: `(TokenString TokenString --)` **Description**: Loop while condition is truthy, executing body each iteration. **Example**: `{ dup 10 < } { dup print 1 + } while` **See Also**: for, break, continue, if **Section**: 6.2 (While Loops) #### window **Operator Type**: Array **Signature**: `(ArrayOf Size -- ArrayOf>)` **Description**: Create sliding windows of given size. **Example**: `[1 2 3 4] 2 window // => [[1 2] [2 3] [3 4]]` **See Also**: slice **Section**: 7.4 (Arrays) #### zip **Operator Type**: Array **Signature**: `(ArrayOf ArrayOf -- ArrayOf>)` **Description**: Combine two arrays element-wise into pairs. **Example**: `[1 2 3] [4 5 6] zip // => [[1 4] [2 5] [3 6]]` **See Also**: enumerate, map **Section**: 7.4 (Arrays) ---