Modifications to REDUCE
Next: New Features
Up: No Title
Previous: Renaming Internal Functions
A few special modifications were made to the REDUCE source code in
order to provide the hooks required for the interaction of the
REDUCE algebra engine with some REDTEN constructs. In most cases
the modifications consist of no more than a few added lines to a
REDUCE function. The modified sources are in the files local3{3,4,5}.red, the filename relects the version of REDUCE
for which it is useful. Other functions have been replaced by renaming
them, and interposing a new function under the old name.
This appendix briefly lists these
modifications; for a complete description see the relevant source files.
- A minor cosmetic modification involves changing the print
character for multiplication from ``*'' to a blank, so that, for
example, a * b is now displayed as a b. There is some
justification for this, since a complicated expression can be hard to
see when it is full of * symbols (and indexed expressions can be
worse), but this modification also has a detrimental effect when the REDUCE
switch nat is off. The user can either restore the old
behaviour with the command
#: lisp put ('times, 'prtch, "*");
or comment the relevant line out of the local source file.
- The function inprint() has been modified to add the
required hook to permit the printing of indexed objects.
- The function diffp() has been modified to add the
required hook for applying the df() operator to an indexed
object.
- The function xread1() has a modification to allow parsing
of ``incomplete'' index-operations such as those used by symz().
- The function prin2!*() has a modification to permit
names containing special characters to print without embedded ! symbols.
- The function terpri!*() has been modified to support the
output pager code.
- The function begin1() has been modified to support
environments, the pager, and the beep switch.
- The function setk1() has been redefined to support
environments, and to catch attempts at algebraic assignments to
indexed object names (see save.red).
- The primative function scan() has been redefined to save
the previous two tokens encountered in the input stream. This allows
the system to find the un-indexed name to which an index has been attached
and prompt the user for its proper creation (see io.red).
- The token() function is redefined as described in
§F.1 to implement the renaming of REDTEN functions and
variables during compilation. This modification is not present in the
final REDTEN system (see rename.red).
Next: New Features
Up: No Title
Previous: Renaming Internal Functions
John Harper
Wed Nov 16 13:34:23 EST 1994