Common Lisp the Language, 2nd Edition
Next: String Access
Up: Common Lisp the Language
Previous: Changing the
Dimensions
A string is a specialized vector (one-dimensional array) whose elements are characters.
Specifically, the type string
is identical to the type
(vector string-char)
, which in turn is the same as
(array string-char (*))
.
X3J13 voted in March 1989 (CHARACTER-PROPOSAL) to eliminate the type
string-char
and to redefine the type string
to
be the union of one or more specialized vector types, the types of whose
elements are subtypes of the type character
.
Any string-specific function defined in this chapter whose name
begins with the prefix string
will accept a symbol instead
of a string as an argument provided that the operation never
modifies that argument; the print name of the symbol is used. In this
respect the string-specific sequence operations are not simply
specializations of generic versions; the generic sequence operations
described in chapter 14 never accept
symbols as sequences. This slight inelegance is permitted in Common Lisp
in the name of pragmatic utility. One may get the effect of having a
generic sequence function operate on either symbols or strings by
applying the coercion function string
to any argument whose
data type is in doubt.
Note that this remark, predating the design of the Common Lisp Object
System, uses the term ``generic’’ in a generic sense and not necessarily
in the technical sense used by CLOS (see chapter 2).
Also, there is a slight non-parallelism in the names of string
functions. Where the suffixes equalp
and eql
would be more appropriate, for historical compatibility the suffixes
equal
and =
are used instead to indicate
case-insensitive and case-sensitive character comparison,
respectively.
Any Lisp object may be tested for being a string by the predicate
stringp
.
Note that strings, like all vectors, may have fill pointers (though
such strings are not necessarily simple). String operations
generally operate only on the active portion of the string (below the
fill pointer). See fill-pointer
and related functions.
Next: String Access
Up: Common Lisp the Language
Previous: Changing the
Dimensions
AI.Repository@cs.cmu.edu