System Function NC: Difference between revisions
From NARS2000
Jump to navigationJump to search
m (added usage with optional braced left arg in a function call) |
No edit summary |
||
Line 3: | Line 3: | ||
{{BoxStart|<apll>Z←⎕NC R</apll> | {{BoxStart|<apll>Z←⎕NC R</apll> | ||
|⎕Name Classification. Argument <apll>R</apll> should be a '''string, vector or matrix''' of workspace names to show names classes for.}} | |⎕Name Classification. Argument <apll>R</apll> should be a '''string, vector or matrix''' of workspace names to show names classes for.}} | ||
{{BoxLine|<apll>R</apll> is | {{BoxLine|<apll>R</apll> is a character Scalar, Vector or Matrix of Names}} | ||
{{BoxEnd|<apll>Z</apll> | {{BoxEnd|<apll>Z</apll> is a integer scalar or vector of name classes}} | ||
System function ⎕NC takes as its right argument a character string specifying a name, vector of names, or character matrix of names. It returns a numeric result which is the classification of each name: | System function ⎕NC takes as its right argument a character string specifying a name, vector of names, or character matrix of names. It returns a numeric result which is the classification of each name. If called from within a user-defined function/operator/hyperator, ⎕NC returns the name class of the most local instance of the name: | ||
{| class="wikitable" | |||
|- | |||
| 1|| User line label | |||
|- | |||
| 2|| User variable | |||
|- | |||
| 3|| User-defined function | |||
|- | |||
| 4|| User-defined operator | |||
|- | |||
| 5|| System variable | |||
|- | |||
| 6|| System function | |||
|- | |||
|7-20|| <i>Unused</i> | |||
|- | |||
|21 || System label | |||
|- | |||
|22 || <i>Unused</i> | |||
|- | |||
|23 || Magic function | |||
|- | |||
|24 || Magic operator | |||
|- | |||
|25 || Magic hyperator | |||
|- | |||
|26 || User-defined hyperator | |||
|- | |||
| 0 || Name not in use | |||
|- | |||
|¯1 || Invalid name | |||
|} | |||
<p>Examples, working with '''⎕NC:'''</p> | <p>Examples, working with '''⎕NC:'''</p> |
Revision as of 19:06, 9 March 2019
Name Classification - ⎕NC (System Function) - available in monadic form only:
Monadic Function
|
||||
R is a character Scalar, Vector or Matrix of Names | ||||
Z is a integer scalar or vector of name classes |
System function ⎕NC takes as its right argument a character string specifying a name, vector of names, or character matrix of names. It returns a numeric result which is the classification of each name. If called from within a user-defined function/operator/hyperator, ⎕NC returns the name class of the most local instance of the name:
1 | User line label |
2 | User variable |
3 | User-defined function |
4 | User-defined operator |
5 | System variable |
6 | System function |
7-20 | Unused |
21 | System label |
22 | Unused |
23 | Magic function |
24 | Magic operator |
25 | Magic hyperator |
26 | User-defined hyperator |
0 | Name not in use |
¯1 | Invalid name |
Examples, working with ⎕NC:
)VARS ⍝Show which global variables exists in the current NARS APL workspace A B C ⍝3 global variables names exist - A, B and C ⎕NC 3 2⍴'A B C ' ⍝Sample use of ⎕NC with a MATRIX right argument(3 names 'A ', 'B ' and 'C ' to enumerate/check) 2 2 2 ⍝ 2 = global variable <--> all 3 names WERE FOUND. ⎕NC 3 1⍴'ABC' ⍝Matrix right argument, compare to first call to ⎕NC, just above - {3 2⍴} vs {3 1⍴} 2 2 2 ⍝Same correct results(2 2 2) = global variable names class ⎕NC ⊃'A ' 'B' 'B' ⍝Call with a disclosed Nested Vector - note the extra space after variable named 'A' >> 'A ' 2 2 2 ⎕NC ⊃'A' 'B' 'C' ⍝This call FAILS(returns 0=name not in use) because APL sees ⎕NC 'ABC'; there is NO variable named 'ABC'. 0 ⍝ Name 'ABC' NOT FOUND ⎕NC ⊃'⍳ ' '⍴' 'A' 'ZZ' ¯1 ¯1 2 0 ⍝Names '⍳ ' and '⍴' are NOT validly constructed(¯1); Variable A IS Found(2), ZZ is validly constructed but Not Found(0).
⎕NC can be used to determine the presence(=2) or absence(=0) of an optional braced argument e.g. {L arg} FuncName R argument in a user function call through ⎕NC usage WITHIN the user function itself, e.g. ⎕NC 'ArgName' ! Ref. User Defined Functions.
See also: Quad Name List ⎕NL
System Variables (A value may be assigned to these except for ⎕DM) | |||||||||
---|---|---|---|---|---|---|---|---|---|
⎕ALX | ⎕CT | ⎕DM | ⎕DT | ⎕ELX | ⎕FC | ⎕FEATURE | ⎕FPC | ⎕IC | ⎕IO |
⎕LR | ⎕LX | ⎕PP | ⎕PR | ⎕PW | ⎕RL | ⎕SA | ⎕WSID | ||
Niladic System Functions (a value cannot be assigned to these) | |||||||||
⎕A | ⎕AV | ⎕EM | ⎕ET | ⎕LC | ⎕NNAMES | ⎕NNUMS | ⎕SI | ⎕SYSID | ⎕SYSVER |
⎕T | ⎕TC | ⎕TCBEL | ⎕TCBS | ⎕TCESC | ⎕TCFF | ⎕TCHT | ⎕TCLF | ⎕TCNL | ⎕TCNUL |
⎕TS | ⎕WA | ||||||||
Monadic or dyadic system functions (a value cannot be assigned to these) | |||||||||
⎕AT | ⎕CR | ⎕DC | ⎕DFT | ⎕DL | ⎕DR | ⎕EA | ⎕EC | ⎕ERROR | ⎕ES |
⎕EX | ⎕FMT | ⎕FX | ⎕MF | ⎕NAPPEND | ⎕NC | ⎕NCREATE | ⎕NERASE | ⎕NINFO | ⎕NL |
⎕NLOCK | ⎕NREAD | ⎕NRENAME | ⎕NREPLACE | ⎕NRESIZE | ⎕NSIZE | ⎕NTIE | ⎕NUNTIE | ⎕STOP | ⎕TF |
⎕TRACE | ⎕UCS | ⎕VR | |||||||
Note that quad functions and variables (except for the ⎕A family of functions) are case insensitive |