4,494
edits
m (Marshall moved page Niladic to Niladic function) |
m (Text replacement - "</source>" to "</syntaxhighlight>") |
||
(4 intermediate revisions by 2 users not shown) | |||
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 < | [[System variable]]s like <syntaxhighlight lang=apl inline>⎕TS</syntaxhighlight> ([[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: | |||
< | <syntaxhighlight lang=apl> | ||
∇ res←set_a | ∇ res←set_a | ||
a ← 'a' | a ← 'a' | ||
res ← 1 | res ← 1 | ||
∇ | ∇ | ||
</ | </syntaxhighlight> | ||
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. | ||
< | <syntaxhighlight lang=apl> | ||
a | a | ||
VALUE ERROR: Undefined name: a | VALUE ERROR: Undefined name: a | ||
Line 20: | Line 20: | ||
a | a | ||
a | a | ||
</ | </syntaxhighlight> | ||
{{APL syntax}} | {{APL syntax}}[[Category:Kinds of functions]][[Category:Syntactic elements]] |