State Indicator Stack R←⎕STACK
R
is a two-column matrix, with one row per entry in the state indicator.
Column 1 :⎕OR
form of user defined functions or operators on the state indicator. Space (⎕UCS 32
) for entries that are not user defined functions or operators.
Column 2 :Indication of the type of the item on the stack.
space |
user defined function or operator |
⍎ |
execute level |
⎕ |
evaluated input |
* |
desk calculator level |
⎕DQ |
in callback function |
other |
primitive operator |
Example
)SI
#.PLUS[2]*
.
#.MATDIV[4]
#.FOO[1]*
⍎
⎕STACK
*
∇PLUS
.
∇MATDIV
*
∇FOO
⍎
*
⍴⎕STACK
8 2
(⍴⎕LC)=1↑⍴⎕STACK
0
Pendent defined functions and operators may be edited in Dyalog APL with no resulting SI damage. However, only the visible definition is changed; the pendent version on the stack is retained until its execution is complete. When the function or operator is displayed, only the visible version is seen. Hence ⎕STACK
is a tool which allows the user to display the form of the actual function or operator being executed.
Example
To display the version of MATDIV
currently pendent on the stack:
⊃⎕STACK[4;1]
∇ R←A MATDIV B
[1] ⍝ Divide matrix A by matrix B
[2] C←A⌹B
[3] ⍝ Check accuracy
[4] D←⌊0.5+A PLUS.TIMES B
∇