Tables can be indexed by values of any type. Strings and aggregates can be of arbitrary size, and their sizes can change during execution. Memory management is automatic. Procedures consist of zero or more expressions separated by newlines or semicolons. Icon programs consist of one or more procedure definitions, and execution begins by calling the procedure named main .
Expressions can produce zero or more values.
The evaluation mechanism tries all combinations of values from generators in pursuit of a successful outcome. If y is less than x , evaluation succeeds and produces the value x . Otherwise, evaluation fails, and no value is produced. Comparison operators produce the value of their right operand if they succeed. Failure drives control expressions and inhibits subsequent evaluation.