﻿(17,)

()
(1,2,3)
(1,3.5,"hi")

[(1,3.5,"hi"), null]

ForEach(a:Range(5), b:["a", "b", "c", "d", "e"], c:[true, false, false, true, false], (a, b, c))

`` TS := ForEach(a:Range(5), b:["a", "b", "c", "d", "e"], c:[true, false, false, true, false], (a, b, c))

TS.Item0
TS[0]
TS[^3]
TS[^4 - 1] // REVIEW: Support simple expressions as constants.
TS[1]
TS[^2]
TS[7 - 6] // REVIEW: Support simple expressions as constants.
TS[2]
TS[^1]
TS[1 shl 1] // REVIEW: Support simple expressions as constants.


TS[::-1]
TS[^0:^3:-1]

TS[0:0:]
TS[1:1:]
TS[0:2:2]
TS[^3:^2:1]
TS[^3:^4:-1]
TS[0:2:-2]
TS[0:5:-1]

TS[0:-2]
TS[0:-2:2]
TS[0:-2:-2]
TS[-1:-2:2]

TS[^0:^5:-1][^0:^5:-1]
TS[:][0:1]
TS[^0:^4:-1][^0:^2:-1]
TS[1:4][1:2]
TS[^2:4:1][^1:^0:1]
TS[^0:^4:-1][^0:^4:-1]
TS[1:10][1:4]
TS[^1:^3:-1][^2:1:1]

TS[-1:-2:-2] // Error.
TS[-1:-2:1+0] // Error.
TS[(2,4,1)] // Error.
TS[(2,true,4,true,1)] // Error.

// REVIEW: Support simple expressions as constants.
TS[1+0:] // Error.
TS[:1+0:] // Error.
TS[::1+0] // Error.
TS[-1::1+0] // Error.
TS[:-1:1+0] // Error.
TS[-1:-1:1+0] // Error.

ForEach(t:TS, t[:2] & (true,) )[:]

``` T1 := (3, true);
``` T2 := (2.5,);
``` T3 := ("hi",);

T1 & T3
T2 & T3
T1 & ("hi",)
(3, true) & T3
