For aggregation, we offer
Numerics: max=, min=, += (\(\sum\)), *= (\(\prod\))
Logic: &= (\(\bigwedge\)), |= (\(\bigvee\)).
A last-one-wins operation, :=. Formally, the last rule which contributes a value determines the head item’s value. That is, a program such as
a := 1.
a := 2 for d.
will give a the value of 1 if d is not provable or is not true and 2 otherwise.
The following list of functions are guaranteed to be present, regardless of backend chosen:
Warning
The distinction between = and == is that the latter evaluates both of its arguments while the former does not. Meanwhile, is is asymmetric, evaluating its right argument and not its left.
See examples/equalities.dyna (or here).
Integers, floats, and double-quoted strings all exist as primtives in the language. Booleans are represented by the atoms true and false.