DSL values have types drawn from .We define, :
with .For an expression, e, the sequence comprehension
yields the sequence of successive values of e obtained when i is bound to successive values in A.
For example, the sample program:
A = range(3); B = (/ i in A: i + i /); C = (/ i in A: (/ j in range(i): i /) /)
yields:
A = (/ 1, 2, 3 /) B = (/ 2, 4, 6 /) C = (/ (/ 1 /), (/ 2, 2 /), (/ 3, 3, 3 /) /)
We omit here a collection of type (inference) rules for the language that define a well-typed program.