This is an old revision of the document!
EVAL
Synopsis
Evaluate an object, recursively
Stack Diagram
Input Stack | Output Stack | |||
---|---|---|---|---|
O1 | → | see list under Description | ||
Level 1 | → | Level n | … | Level 1 |
Type | Operator | |
Parallel list processing | Yes, but specific group is determined by the object being evaluated | |
Affected by flags | -70 | Global autosimplification rules |
-71 | Application of Group 1 autosimplification rules | |
-72 | Application of Group 2 autosimplification rules | |
-73 | Application of Group 3 autosimplification rules | |
-74 | Application of Group 4 autosimplification rules | |
-75 | Application of Group 5 autosimplification rules | |
-76 | Application of Group 6 autosimplification rules | |
-77 | Application of Group 7 autosimplification rules | |
-78 | Application of Group 8 autosimplification rules |
Description
The EVAL
command evaluates the object on the top level of the stack. Evaluation occurs recursively i.e. objects contained in the argument are evaluated too, and so on.
The effect of the evaluation and the resulting output depends on the type of object being evaluated, as summarized by the following table.
- Local Name: Recalls the content of the variable.
- Global Name: Calls the content of a variable:
- a Name is evaluated;
- a Program is evaluated;
- a Directory becomes the current directory;
- other objects which are not lists are put on the stack.
- Program: Enters each object in the program:
- Symbolic expression: Enters each object in the expression:
- a Name is evaluated;
- a Keyword is
XEQ
ted; - other objects which are not lists are put on the stack.
- Other objects: if they are not lists they are put on the stack.
- List: Enters each object in the list:
- any object is
EVAL
uated according above mentioned rules.
As a final step, EVAL
will perform numerical simplification according to the status of flags from -70 to -78.
Compatibility
This command is only partially compatible with userRPL.
In particular:
- In userRPL, if the argument is a list
EVAL
enters any object in the list, then:- a Name is evaluated;
- a Program is evaluated;
- a Keyword is
XEQ
ted; - other objects are put on the stack.
while in newRPL, parallel list processing is performed.
Usage
If the following commands are executed
2: 6.28 1: 'TWOPI' …………………………………………………………………………………… STO
2: « TWOPI * » 1: 'CIRCUM' …………………………………………………………………………………… STO
then the command
1: 2 …………………………………………………………………………………… CIRCUM
will perform the following steps:
CIRCUM
(a global name) isEVAL
uated;« TWOPI * »
(a program) isEVAL
uated;TWOPI
, the first object (a global name) in the program isEVAL
uated;6.28
(a real number) is put on the stack;*
(a keyword) isXEQ
ted.
resulting in
1: 12.56 ……………………………………………………………………………………
Related Commands
Operator | Short Description | |
---|---|---|
Evaluation operators: | ||
EVAL1 | Evaluate one level | NEW |
EVAL | Evaluate full depth | |
XEQ | Execute | NEW |
→NUM | Compute numeric result | |
Test operators: | ||
== | Equality test | |
≠ | Not equal test | |
< | Less than test | |
≤ | Less than or equal test | |
> | Greater than test | |
≥ | Greater than or equal test | |
CMP | Comparison test (<0 if A<B, 0 if A==B, >0 if A>B) | NEW |
SAME | Comparison test, true if objects are the same | |
ISTRUE | True test | NEW |
Logical operators: | ||
AND | Logical AND | |
OR | Logical OR | |
XOR | Logical XOR | |
NOT | Logical NOT | |
Mathematic operators: | ||
+ | Addition | |
- | Subtraction | |
* | Multiplication | |
/ | Division | |
^ | Power | |
XROOT | Root | |
INV | Inverse | |
NEG | Negate/change sign | |
ABS | Magnitude or absolute value |