.c	Wednesday  Nov 30,1983  4:19  LQ+2D.22H.26M.38S.  -*- Bolio -*-

The lan{nil} implementation of 3loop* defines the following
additional sequence iteration paths.  Basically, they are all special
cases of the general 3elements* path, but can generate better code
because they may know how to access the sequence better.  (If
lan{nil}'s compiler were smarter, one would be able to get the same
effect with type declarations, but that is not the case yet.)
Each iteration path name is defined in both the singular and plural form.

.table 3 250 500
.item vector-elements
'loop_path_index vector-elements
This will iterate over any type of vector.
There really isn't a good reason to use this over the 3elements*
iteration path anymore.
.item characters
'loop_path_index characters
.item1 string-elements
'loop_path_index string-elements
This iterates over the characters of a string.  3char* is used
to reference them, hence the iteration variable defaults to type
3string-char*.
.item bits
.item1 bit-vector-elements
'loop_path_index bits
'loop_path_index bit-vector-elements
This iterates over the bits in a bit-vector;  the iteration variable
is declared to be 3bit*, as it can take on only 30* or
31* as values.
.end_table

The following are the special cases which may be of somewhat more
interest, because they can generate much better code knowing that the
sequence is of a particular simple type:
.table 3 250 500
.item simple-vector-elements
'loop_path_index simple-vector-elements
The sequence must be a simple vector.
.item simple-string-elements
'loop_path_index simple-string-elements
The sequence must be a simple string.
.item simple-bit-vector-elements
'loop_path_index simple-bit-vector-elements
The sequence must be a simple bit vector.
.end_table

