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<T> 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<T> 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<T> -- ArrayOf<Pair<Size T>>)
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<T> TokenString -- ArrayOf<T>)
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<Size>)
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<T> 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<T> 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<Stringifiable> -- 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> 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<T> TokenString -- ArrayOf<U>)
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<Number> -- 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> 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<T> -- ArrayOf<T>)
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<String>)
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<T> 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> -- 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<T>> -- ArrayOf<ArrayOf<T>>)
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<T> 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<T> Size -- ArrayOf<ArrayOf<T>>)
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<T> ArrayOf<U> -- ArrayOf<Pair<T U>>)
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)