perm filename SEQU[L70,TES] blob sn#009943
filedate 1972-06-27 generic text, type T, neo UTF8
00400 A "sequence" is not a single entity but a certain kind of structure
00500 constructed from one or more entities. A sequence always has at
00600 least one element, but for informal purposes, NIL may be thought of
00700 as the sequence of zero elements.
00900 S is a sequence iff FIRST(S) and REST(S) succeed. NIL is not a true
01000 sequence because FIRST(NIL) and REST(NIL) both FAIL.
01200 The most common sequence is a non-empty LIST, for which FIRST(S) =
01300 CAR(S) and REST(S) = CDR(S).
01500 Two other standard sequences are CHARACTER FILE and TOKEN FILE.
01700 If CF is a CHARACTER FILE, then FIRST(S) is the first character in
01800 the file and REST(S) is the file lacking that character.
02000 If TF is a token file, then FIRST(TF) is the first token in the file
02100 and REST(TF) is the file lacking that token. Both are computed with
02200 the help of the current SCANNER(TF) function.
02400 The user may define other kinds of sequences by defining successful FIRST
02500 and REST functions for other types of entities.
02700 The following functions are defined for every sequence:
02900 NEXT(ref V) = FIRST(VALUE(V)) PROG1 V←REST(VALUE(V))
03100 EMPTY(S) = T iff S is a sequence, NIL otherwise
03300 LENGTH(S) = if EMPTY(S) then 0 else 1 + LENGTH(REST(S))
03500 FULL(S) = NOT EMPTY(S)
03700 TYPE(S) = the type of the entity that provides FIRST(S),
03800 e.g., if S is a list then PAIR; if S is a character
03900 file or token file then CHARFILE or TOKEFILE.