02.1
DeclarationFunctions, one line or many
A function takes typed parameters with optional defaults and a trailing variadic, and returns a declared type. The arrow form carries a single expression and the colon form carries a body, so a one-liner never has to grow braces to become readable.
DefaultsVariadic
Declarations→02.2
BindingsImmutable by construction
A let binds once. There is no assignment operator to reach for, so a function has no side effects to reason about and the evaluator is free to run calls in parallel.
let
02.3
Control flowConditionals and pattern matching
An inline if is an expression and chains into an else-if ladder. A match arm tests a comparison, a literal, a range or a wildcard, which covers the classification shape these functions are mostly written for.
matchRanges
02.4
The pipeChained in reading order
The pipe operator chains transformations in reading order, so a filter, an average and a rounding compose as three steps instead of three nested calls. It is the piece of syntax that makes the rest readable to somebody who does not write code for a living.
|
02.5
CollectionsMap through group_by
map, filter, reduce, sort, head, tail, unique, flatten, zip, group_by and chunk, all shaped to pipe. A filter accepts an implicit argument, so a comparison alone is a valid predicate.
Pipe-shaped
02.6
AggregationTwelve reducers
sum, avg, min, max, count, stdev, variance, median and percentile, plus count_where and sum_where for the conditional cases that otherwise need a filter first.
Percentile
02.7
ErrorsDegrade, or say nothing happened
try and catch fall back to a value. Null coalescing and optional chaining handle the absent-field case without a nested conditional at every access.
???.
02.8
NamespacesStable fully-qualified names
Functions live under system, shared, team, user or app namespaces, so a name is both an access-control decision and something that stays valid when the function is shared.
Versioned
02.9
Standard libraryFive namespaces, all pure
system::math, system::text, system::datetime, system::stats and system::collections ship preloaded. Every one of them is written in DTL itself, which is the honest test of whether the language is expressive enough.
Written in DTL
Standard library→