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
the single string
abcdef. This can be seen by evaluating the
(concat "abc" "def")
The value produced by evaluating this expression is
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.