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.
In most cases, commands will accept a list instead of a single argument and will proceed according to the 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 stackLIST→: Split a list into individual objects in the stackSORT: Sort the elements of a listREVLIST: Reverses the order of 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.