Attributes R←{X} ⎕AT Y
Y
can be a simple character scalar, vector or matrix, or a vector of character vectors representing the names of 0 or more defined functions or operators. Used dyadically, this function closely emulates the APL2 implementation. Used monadically, it returns information that is more appropriate for Dyalog APL.
Y
specifies one or more names. If Y
specifies a single name as a character scalar, a character vector, or as a scalar enclosed character vector, the result R
is a vector. If Y
specifies one or more names as a character matrix or as a vector of character vectors R
is a matrix with one row per name in Y
.
Monadic Use
If X
is omitted, R
is a 4-element vector or a 4 column matrix with the same number of rows as names in Y
containing the following attribute information:
R[1]
or R[;1]
: Each item is a 3-element integer vector representing the function header syntax:
1 | Function result | 0 if the function has no result 1 if the function has an explicit result ¯1 if the function has a shy result |
2 | Function valence | 0 if the object is a niladic function or not a function 1 if the object is a monadic function 2 if the object is a dyadic function ¯2 if the object is an ambivalent function |
3 | Operator valence | 0 if the object is not an operator 1 if the object is a monadic operator 2 if the object is a dyadic operator |
The following values correspond to the syntax shown alongside:
0 0 0 ∇ FOO
1 0 0 ∇ Z←FOO
¯1 0 0 ∇ {Z}←FOO
0 ¯2 0 ∇ {A} FOO B
¯1 1 2 ∇ {Z}←(F OP G)B
R[2]
or R[;2]
: Each item is the (⎕TS
form) timestamp of the time the function was last fixed.
R[3]
or R[;3]
: Each item is an integer reporting the current ⎕LOCK
state of the function:
0 |
Not locked |
1 |
Cannot display function |
2 |
Cannot suspend function |
3 |
Cannot display or suspend |
R[4]
or R[;4]
: Each item is a character vector - the network ID of the user who last fixed (edited) the function.
Example
∇ {z}←{l}(fn myop)r
[1] ...
∇ z←foo
[1] ...
∇ z←{larg}util rarg
[1] ...
⎕LOCK'foo'
util2←util
]display ⎕AT 'myop' 'foo' 'util' 'util2'
.→--------------------------------------------.
↓ .→------. .→-----------------. .→---. |
| |¯1 ¯2 1| |1996 8 2 2 13 56 0| 0 |john| |
| '~------' '~-----------------' '----' |
| .→----. .→------------. .⊖. |
| |1 0 0| |0 0 0 0 0 0 0| 3 | | |
| '~----' '~------------' '-' |
| .→-----. .→------------------. .→---. |
| |1 ¯2 0| |1996 3 1 14 12 10 0| 0 |pete| |
| '~-----' '~------------------' '----' |
| .→-----. .→-------------------. .→-----. |
| |1 ¯2 0| |1998 8 26 16 16 42 0| 0 |graeme| |
| '~-----' '~-------------------' '------' |
'∊--------------------------------------------'
Dyadic Use
The dyadic form of ⎕AT
emulates APL2. It returns the same rank and shape result containing information that matches the APL2 implementation as closely as possible.
The number of elements or columns in R
and their meaning depends upon the value of X
which may be 1, 2, 3 or 4.
If X
is 1, R
specifies valences and contains 3 elements (or columns) whose meaning is as follows:
1 | Explicit result | 1 if the object has an explicit result or is a variable 0 otherwise |
2 | Function valence | 0 if the object is a niladic function or not a function 1 if the object is a monadic function 2 if the object is an ambivalent function |
3 | Operator valence | 0 if the object is not an operator 1 if the object is a monadic operator 2 if the object is a dyadic operator |
If X
is 2, R
specifies fix times (the time the object was last updated) for functions and operators named in Y
. The time is reported as 7 integer elements (or columns) whose meaning is as follows. The fix time reported for names in Y
which are not defined functions or operators is 0.
1 | Year |
2 | Month |
3 | Day |
4 | Hour |
5 | Minute |
6 | Second |
7 | Milliseconds (this is always reported as 0) |
If X
is 3, R
specifies execution properties and contains 4 elements (or columns) whose meaning is as follows:
1 | Displayable | 0 if the object is displayable 1 if the object is not displayable |
2 | Suspendable | 0 if execution will suspend in the object 1 if execution will not suspend in the object |
3 | Weak Interrupt behaviour | 0 if the object responds to interrupt 1 if the object ignores interrupt |
4 | (always 0) |
If X
is 4, R
specifies object size and contains 2 elements (or columns) which both report the ⎕SIZE
of the object.