eintr: Data types
1.8.1 Arguments’ Data Types
---------------------------
The type of data that should be passed to a function depends on what
kind of information it uses. The arguments to a function such as ‘+’
must have values that are numbers, since ‘+’ adds numbers. Other
functions use different kinds of data for their arguments.
For example, the ‘concat’ function links together or unites two or
more strings of text to produce a string. The arguments are strings.
Concatenating the two character strings ‘abc’, ‘def’ produces the single
string ‘abcdef’. This can be seen by evaluating the following:
(concat "abc" "def")
The value produced by evaluating this expression is ‘"abcdef"’.
A function such as ‘substring’ uses both a string and numbers as
arguments. The function returns a part of the string, a “substring” of
the first argument. This function takes three arguments. Its first
argument is the string of characters, the second and third arguments are
numbers that indicate the beginning (inclusive) and end (exclusive) of
the substring. The numbers are a count of the number of characters
(including spaces and punctuation) from the beginning of the string.
Note that the characters in a string are numbered from zero, not one.
For example, if you evaluate the following:
(substring "The quick brown fox jumped." 16 19)
you will see ‘"fox"’ appear in the echo area. The arguments are the
string and the two numbers.
Note that the string passed to ‘substring’ is a single atom even
though it is made up of several words separated by spaces. Lisp counts
everything between the two quotation marks as part of the string,
including the spaces. You can think of the ‘substring’ function as a
kind of atom smasher since it takes an otherwise indivisible atom and
extracts a part. However, ‘substring’ is only able to extract a
substring from an argument that is a string, not from another type of
atom such as a number or symbol.