Quad name
|
A quad name or system name is a general term for built-ins denoted by a name beginning with the quad character, ⎕
. The term only used when explicitly needing to cover all syntactic classes of such built-ins; constants, variables, objects, functions and operators. It is common to call these system constants, system variables, etc., although the term system function is often used as a synonym for quad name. Quad names are used for features that abide by the normal syntax, but are not part of the core language. ⎕
by itself (standard output/evaluated input) and ⍞
(message output/standard input) are often included in the quad name category.
Support
Dialects vary widely in their repertoire of quad names, but generally agree on their naming, so if two dialects share a quad name, it is likely that the meaning of it is identical or very similar. As opposed to other alphabetical identifiers, system names are case insensitive (except ⎕a
in APLX), though most traditionally uppercase them. One of the most commonly used system variables is ⎕IO
(Index origin).
Classes
Quad names can have any of the existing syntactic classes:
- System constants are handy values like the alphabet (
⎕A
), but can also be used to query various global states, like the current time stamp (⎕TS
). Of course, the time will vary, so it isn't constant in that sense, however, but they are constant in that they cannot be altered by assignment. - System variables are used to alter the behaviour of the language. For example the number of significant digits displayed can be controlled by setting the print precision (
⎕PP
). - System objects are references to namespaces, in particular the session object (
⎕SE
). - System functions are various utility functions, like
⎕FX
to define ("FiX") a function under program control. - System operators only occur in Dyalog APL and are used for things like text search and replace (
⎕S
and⎕R
).
Like primitives, quad names exhibit behaviour as if there's one copy in each namespace, and so for some of them, their value can vary depending on the namespace in which they are used.
Unusual behaviour
Some system variables exhibit behaviour that is unusual for other items of their class. for example:
- While
⎕
and⍞
syntactically act like variables, they have the side effect of printing whatever is assigned to them, to stdout and stderr respectively. ⎕OFF
and⎕CLEAR
behave syntactically as constants, although when querying their value, the interpreter will shut down or clear the workspace, respectively.- Variant,
⎕OPT
(which is a synonym of the primitive operator⍠
), is syntactically a normal operator, but it amends a current state of settings for its operand, which may itself have an associated state though its usage. - The base class object,
⎕BASE
, cannot be used by itself, only with a namespace dot after it, to access the inside of the current object's base class. Therefore, one must use the current namespace system object, inside the base object to get a reference to the base class;⎕BASE.⎕THIS
.
External links
Lessons
- APL Cultivation: behaviour, session
- APL Cultivation: constants, tools & external utils
- APL Cultivation: code management, I/O, dates, Unicode files, errors
- APL Cultivation: stack & workspace info, misc
Documentation
APL features [edit] | |
---|---|
Built-ins | Primitives (functions, operators) ∙ Quad name |
Array model | Shape ∙ Rank ∙ Depth ∙ Bound ∙ Index (Indexing) ∙ Axis ∙ Ravel ∙ Ravel order ∙ Element ∙ Scalar ∙ Vector ∙ Matrix ∙ Simple scalar ∙ Simple array ∙ Nested array ∙ Cell ∙ Major cell ∙ Subarray ∙ Empty array ∙ Prototype |
Data types | Number (Boolean, Complex number) ∙ Character (String) ∙ Box ∙ Namespace ∙ Function array |
Concepts and paradigms | Conformability (Scalar extension, Leading axis agreement) ∙ Scalar function (Pervasion) ∙ Identity element ∙ Complex floor ∙ Array ordering (Total) ∙ Tacit programming (Function composition, Close composition) ∙ Glyph ∙ Leading axis theory ∙ Major cell search ∙ First-class function |
Errors | LIMIT ERROR ∙ RANK ERROR ∙ SYNTAX ERROR ∙ DOMAIN ERROR ∙ LENGTH ERROR ∙ INDEX ERROR ∙ VALUE ERROR ∙ EVOLUTION ERROR |