===== Lists =====
Lists are ordered collections of objects of any type. Lists are entered as a sequence of objects enclosed in curly braces ''{'' and ''}''. The syntax rules of each individual object still apply when they are within a list.
Lists can contain any number of items, including none, therefore the empty list ''{ }'' is valid and can be used. Items can be repeated within a list, and the order in which items are inserted is preserved unless the order is intentionally changed, for example using the ''SORT'' command.
----
==== Operating with Lists ====
In most cases, commands will accept a list instead of a single argument and will proceed according to the [[manual:chapter5:listproc|Parallel Processing with Lists section]].
For example, lists can be used to quickly apply the same operation to more than one value:
2: { 1 2 3 }
1: 1
……………………………………………………………………………………
+
will result in adding ''1'' to each element on the list: ''{ 2 3 4 }''.
There's operations that are exclusive to lists, for example the command ''ADD'' will concatenate two lists, or append 1 element at the end of the list.
2: { 1 2 3 }
1: 1
……………………………………………………………………………………
ADD
will result in ''{ 1 2 3 1 }'' and
2: { 1 2 3 }
1: { 4 5 6 }
……………………………………………………………………………………
ADD
will result in ''{ 1 2 3 4 5 6 }''
Other common commands that operate on lists are:
* ''→LIST'': Creates a list from loose objects in the stack
* ''LIST→'': Split a list into individual objects in the stack
* ''SORT'': Sort the elements of a list
* ''REVLIST'': Reverses the order of a list
==== Elements within a List ====
Elements in a list can be referred to by a numeric index. The index starts at ''1'' for the first element of the list. To get an element from a list, the ''GET'' command is used:
2: { 11 12 13 }
1: 2
……………………………………………………………………………………
GET
will result in ''12''.
Replacing an element is done via the ''PUT'' command:
3: { 11 12 13 }
2: 2
1: 3
……………………………………………………………………………………
PUT
will result in ''{ 11 3 13 }'' because the object ''3'' replaced the object at index ''2''
Elements of a list can also be accessed from within algebraic expression (read-only) by giving the list a name (store the list in a variable using ''STO'' or ''LSTO'') and then including the index in parenthesis, much like a mathematical function.
For example, assuming the list ''{ 11 12 13 }'' was stored in variable ''L'', evaluating ''%%'L(2)+10'%%'' will result in ''22'' as expected.
==== Procedures with Lists ====