Niladic function: Difference between revisions

Jump to navigation Jump to search
27 bytes added ,  20:56, 10 September 2022
m
Text replacement - "<source" to "<syntaxhighlight"
m (Categories)
m (Text replacement - "<source" to "<syntaxhighlight")
Line 1: Line 1:
In [[APL syntax]], a '''niladic function''' is a special type of [[function]] that takes no [[argument]]s and is evaluated immediately when it is encountered in a statement. It cannot be used as an [[operand]] because this evaluation happens before operator binding, or any other evaluation step such as [[stranding]]. For this reason operators are always defined to take non-niladic operands. Niladic is considered one of three possible [[function valence]]s along with [[monadic]] and [[dyadic]].
In [[APL syntax]], a '''niladic function''' is a special type of [[function]] that takes no [[argument]]s and is evaluated immediately when it is encountered in a statement. It cannot be used as an [[operand]] because this evaluation happens before operator binding, or any other evaluation step such as [[stranding]]. For this reason operators are always defined to take non-niladic operands. Niladic is considered one of three possible [[function valence]]s along with [[monadic]] and [[dyadic]].


[[System variable]]s like <source lang=apl inline>⎕TS</source> ([[time stamp]]) might be considered instances of niladic functions but are usually not described this way.
[[System variable]]s like <syntaxhighlight lang=apl inline>⎕TS</source> ([[time stamp]]) might be considered instances of niladic functions but are usually not described this way.


In most dialects, a niladic function cannot be created as a [[derived function]] or [[dfn]]. However, an APL programmer can define a [[tradfn]] which takes no arguments:
In most dialects, a niladic function cannot be created as a [[derived function]] or [[dfn]]. However, an APL programmer can define a [[tradfn]] which takes no arguments:
<source lang=apl>
<syntaxhighlight lang=apl>
∇ res←set_a
∇ res←set_a
a ← 'a'
a ← 'a'
Line 11: Line 11:
</source>
</source>
After defining such a function, it can be evaluated simply by writing its name, with no need to indicate any arguments. A niladic function is the only possible named entity with this behaviour: for any other kind of value, writing the name alone in a statement will simply return that value, but for a niladic function it evaluates the function and returns the result.
After defining such a function, it can be evaluated simply by writing its name, with no need to indicate any arguments. A niladic function is the only possible named entity with this behaviour: for any other kind of value, writing the name alone in a statement will simply return that value, but for a niladic function it evaluates the function and returns the result.
<source lang=apl>
<syntaxhighlight lang=apl>
       a
       a
VALUE ERROR: Undefined name: a
VALUE ERROR: Undefined name: a

Navigation menu