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