CREATE QUERY listAccumEx() FOR GRAPH minimalNet {
ListAccum<INT> @@intListAccum;
ListAccum<STRING> @@stringListAccum;
ListAccum<STRING> @@stringMultiplyListAccum;
ListAccum<STRING> @@stringAdditionAccum;
ListAccum<STRING> @@letterListAccum;
ListAccum<ListAccum<STRING>> @@nestedListAccum;
@@intListAccum = [1,3,5];
PRINT @@intListAccum.get(0), @@intListAccum.get(1);
PRINT @@intListAccum.get(8); # Out of bound: default value of int: 0
#Other built-in functions
PRINT @@intListAccum.size();
PRINT @@intListAccum.contains(2);
PRINT @@intListAccum.contains(3);
@@stringListAccum += "Hello";
@@stringListAccum += "World";
PRINT @@stringListAccum; // ["Hello","World"]
@@letterListAccum += "a";
@@letterListAccum += "b";
# ListA + ListB produces a new list equivalent to ListB appended to ListA.
# Ex: [a,b,c] + [d,e,f] => [a,b,c,d,e,f]
@@stringAdditionAccum = @@stringListAccum + @@letterListAccum;
PRINT @@stringAdditionAccum;
#Multiplication produces a list of all list-to-list element combinations (STRING TYPE ONLY)
# Ex: [a,b] * [c,d] = [ac, ad, bc, bd]
@@stringMultiplyListAccum = @@stringListAccum * @@letterListAccum;
PRINT @@stringMultiplyListAccum;
#Two dimensional list (3 dimensions is possible as well)
@@nestedListAccum += [["foo", "bar"], ["Big", "Bang", "Theory"], ["String", "Theory"]];
PRINT @@nestedListAccum.get(0);
PRINT @@nestedListAccum.get(0).get(1);