Functions And Calls
Composing Small Functions
This example shows declarations, nested calls, and intermediate values.
fn square(value is int) is int (
return value * value
)
fn distanceSquared(x is int, y is int) is int (
xSquared = square(x)
ySquared = square(y)
return xSquared + ySquared
)
Optional And Default Arguments
This function accepts both a default value and an optional fallback.
fn clamp(value is int, minimum is int = 0, maximum is int = 100) is int (
if (value < minimum) (
return minimum
)
if (value > maximum) (
return maximum
)
return value
)
Rest Arguments
This example collects an arbitrary number of integer arguments.
fn sum(...values is int[]) is int (
total is var int = 0
values each value (
total += value
)
return total
)
fn sampleTotal() is int (
return sum(3, 5, 8, 13)
)
Layering Function Calls
This example keeps a nested calculation readable by naming its intermediate results.
fn clamp(value is int, minimum is int = 0, maximum is int = 100) is int (
if (value < minimum) (
return minimum
)
if (value > maximum) (
return maximum
)
return value
)
fn percentage(part is int, whole is int) is int (
return part * 100 / whole
)
fn completionLabel(completed is int, total is int) is string (
value = percentage(completed, total)
bounded = clamp(value)
return "((bounded))% complete"
)