123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 |
- \section{Concepts}
- \begin{Type}{IDENTIFIER}
- Identifiers in REDUCE consist of one or more alphanumeric characters, of
- which the first must be alphabetical. The maximum number of characters
- allowed is system dependent, but is usually over 100. However, printing
- is simplified if they are kept under 25 characters.
- You can also use special characters in your identifiers, but each must be
- preceded by an exclamation point \name{!} as an escape character. Useful
- special characters are \name{\ # \$ \% ^ \& * - + = ? < > ~ | / !} and
- the space. Note that the use of the exclamation point as a special
- character requires a second exclamation point as an escape character.
- The underscore \name{\_} is special in this regard. It must be preceded
- by an escape character in the first position in an identifier, but is
- treated like a normal letter within an identifier.
- Other characters, such as \name{( ) # ; ` ' "} can also be used if
- preceded by a \name{!}, but as they have special meanings to the Lisp
- reader it is best to avoid them to avoid confusion.
- Many system identifiers have * before or after their names, or - between
- words. If you accidentally pick one of these names for your own identifier,
- it could have disastrous effects. For this reason it is wise not to include
- * or - anywhere in your identifiers.
- You will notice that REDUCE does not use the escape characters when it prints
- identifiers containing special characters; however, you still must use them
- when you refer to these identifiers. Be careful when editing statements
- containing escaped special characters to treat the character and its escape
- as an inseparable pair.
- Identifiers are used for variable names, labels for \name{go to} statements,
- and names of arrays, matrices, operators, and procedures. Once an identifier is
- used as a matrix, array, scalar or operator identifier, it may not be used
- again as a matrix, array or operator. An operator or array identifier may
- later be used as a scalar without problems, but a matrix identifier cannot be
- used as a scalar. All procedures are entered into the system as operators, so
- the name of a procedure may not be used as a matrix, array, or operator
- identifier either.
-
- \end{Type}
- \begin{Type}{KERNEL}
- A \name{kernel} is a form that cannot be modified further by the REDUCE
- canonical simplifier. Scalar variables are always kernels. The
- other important class of kernels are operators with their arguments.
- Some examples should help clarify this concept:
- \begin{TEX}
- \begin{center}
- \begin{tabular}{|l@{\hspace*{2cm}}|l|}
- \hline
- \multicolumn{1}{|c|}{Expression} & \multicolumn{1}{c|}{Kernel?}\\
- \hline
- \verb|x| & Yes\\
- \meta{varname} & Yes\\
- \verb|cos(a)| & Yes\\
- \verb|log(sin(x**2))| & Yes\\
- \verb|a*b| & No\\
- \verb|(x+y)**4| & No\\
- \meta{matrix identifier} & No\\
- \hline
- \end{tabular}
- \end{center}
- \end{TEX}
- \begin{INFO}
- {
- \begin{verbatim}
- Expression Kernel?
- x Yes
- varname Yes
- cos(a) Yes
- log(sin(x**2)) Yes
- a*b No
- (x+y)**4 No
- matrix-identifier No
- \end{verbatim}
- }
- \end{INFO}
- Many REDUCE operators expect kernels among their arguments. Error messages
- result from attempts to use non-kernel expressions for these arguments.
-
- \end{Type}
- \begin{Type}{STRING}
- A \name{string} is any collection of characters enclosed in double quotation
- marks (\name{"}). It may be used as an argument for a variety of commands
- and operators, such as \name{in}, \name{rederr} and \name{write}.
- \begin{Examples}
- write "this is a string"; & this is a string \\
- write a, " ", b, " ",c,"!"; & A B C!
- \end{Examples}
- \end{Type}
|