In Pop-11, it is possible to access or update the N'th element of a list or vector type datastructures simply by applying the structure to the number N.
vars list1 = [a list of words], vec1 = {contents of vector}, string1 = 'ABCDE';In each case we can access the second element simply by applying the structure to the number 2:
list1(2) => ** list vec1(2) => ** of string1(2) => ** 66Similarly a numerical subscript can be used for updating:
"set" -> list1(2); list1 => ** [a set of words] "without" -> vec1(2); vec1 => ** {contents without vector} `?` -> string1(2); string1 => ** A?CDEThis facility makes it easy to write a program that will operate on objects of different types, e.g.:
define iselement(item, structure) -> answer; lvars num; for num from 1 to length(structure) do if item == structure(num) then true -> answer; return(); endif; endfor; false -> answer; enddefine; iselement("set", list1) => ** <true> iselement("set", vec1) => ** <false> iselement(`?`, string1) => ** <true>