Modifications to REDUCE



next up previous contents index
Next: New Features Up: No Title Previous: Renaming Internal Functions

Modifications to REDUCE

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.

  1. 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.
  2. The function inprint() has been modified to add the required hook to permit the printing of indexed objects.
  3. The function diffp() has been modified to add the required hook for applying the df() operator to an indexed object.
  4. The function xread1() has a modification to allow parsing of ``incomplete'' index-operations such as those used by symz().
  5. The function prin2!*() has a modification to permit names containing special characters to print without embedded ! symbols.
  6. The function terpri!*() has been modified to support the output pager code.
  7. The function begin1() has been modified to support environments, the pager, and the beep switch.
  8. The function setk1() has been redefined to support environments, and to catch attempts at algebraic assignments to indexed object names (see save.red).
  9. 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).
  10. 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 up previous contents index
Next: New Features Up: No Title Previous: Renaming Internal Functions



John Harper
Wed Nov 16 13:34:23 EST 1994