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) =>
    ** 66
Similarly 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?CDE
This 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>