===== 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 ====