The procedures hd and tl are used for accessing and updating the head of a list or its tail (the sublist containing everything except the first element). Each is a doublet, i.e. each has an updater.
The procedure subscrv is available for accessing and updating a particular element of a vector, as illustrated here:
    vars vec = {the cat on the mat};
    subscrv(3, vec) =>       ;;; access the third element of vec
    ** on
    "under" -> subscrv(3, vec);     ;;; update the third element
    vec =>
    ** {the cat under the mat}
For accessing individual components of a string, use subscrs. The
components of a string are characters, which, in Pop-11 are the 8-bit
ascii character codes, as described in HELP ASCII. E.g. the code for
A is 65, for B is 66, etc., and these can also be represented as
`A`, `B`, etc. Thus we can access or modify characters in a string:
    vars string = 'ABCDE';
    string =>
    ** ABCDE
    subscrs(3, string) =>           ;;; get the third character
    ** 67
    `Z` -> subscrs(3, string);      ;;; update the third character
    string =>
    ** ABZDE