Artifact c4bded67244cb8d391ae122b9c2020e1b7b1bd58ae4eb4bd8e11a445ec4c11dd:
- File
r36/help/CONCEPT.TEX
— part of check-in
[152fb3bdbb]
at
2011-10-17 17:58:33
on branch master
— svn:eol-style, svn:executable and line endings for files
in historical/r36 treegit-svn-id: https://svn.code.sf.net/p/reduce-algebra/code/trunk/historical@1480 2bfe0521-f11c-4a00-b80e-6202646ff360 (user: schoepf@users.sourceforge.net, size: 4069) [annotate] [blame] [check-ins using] [more...]
\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}