Commute: Difference between revisions
m (Text replacement - "</source>" to "</syntaxhighlight>") |
m (Text replacement - "<source" to "<syntaxhighlight") |
||
Line 4: | Line 4: | ||
This decrements from the vector: | This decrements from the vector: | ||
< | <syntaxhighlight lang=apl> | ||
1 -⍨ 1 2 3 | 1 -⍨ 1 2 3 | ||
0 1 2 | 0 1 2 | ||
Line 10: | Line 10: | ||
{{Works in|[[Dyalog APL]], [[dzaima/APL]], [[NARS2000]]}} | {{Works in|[[Dyalog APL]], [[dzaima/APL]], [[NARS2000]]}} | ||
Double: | Double: | ||
< | <syntaxhighlight lang=apl> | ||
+⍨1 2 3 | +⍨1 2 3 | ||
2 4 6 | 2 4 6 | ||
Line 16: | Line 16: | ||
{{Works in|[[Dyalog APL]], [[dzaima/APL]], [[NARS2000]]}} | {{Works in|[[Dyalog APL]], [[dzaima/APL]], [[NARS2000]]}} | ||
[[Commute]] can be used to emulate a monadic < | [[Commute]] can be used to emulate a monadic <syntaxhighlight lang=apl inline>f g h</syntaxhighlight> [[Fork]] when combined with [[Compose]] (note the following code is not workable APL, but a series of evaluations): | ||
< | <syntaxhighlight lang=apl> | ||
g⍨∘f⍨∘h⍨ x | g⍨∘f⍨∘h⍨ x | ||
x g⍨∘f⍨∘h x ⍝ the last ⍨ is being used monadically, i.e. Selfie | x g⍨∘f⍨∘h x ⍝ the last ⍨ is being used monadically, i.e. Selfie | ||
Line 28: | Line 28: | ||
== History == | == History == | ||
The Commute operator was defined in [[Operators and Functions]] in 1978, and taken up by [[NARS]] as a result. [[Dyalog]], influenced by NARS, included the operator early on. While it didn't appear in [[SHARP APL]], it was included in [[J]] as "Reflex/Passive" (< | The Commute operator was defined in [[Operators and Functions]] in 1978, and taken up by [[NARS]] as a result. [[Dyalog]], influenced by NARS, included the operator early on. While it didn't appear in [[SHARP APL]], it was included in [[J]] as "Reflex/Passive" (<syntaxhighlight lang=j inline>~</syntaxhighlight>). | ||
== External links == | == External links == |
Revision as of 22:06, 10 September 2022
⍨
|
Commute (⍨
) is a monadic operator that takes a dyadic function as operand and modifies how the argument(s) of its derived functions are used. If the derived function is used monadically, the argument is also used as left argument. This usage is also known as Self or, more informally, Selfie. If the derived function is used dyadically, the arguments are swapped. This usage is also known as Swap. The glyph is also used for Constant.
Examples
This decrements from the vector:
1 -⍨ 1 2 3 0 1 2
Double:
+⍨1 2 3 2 4 6
Commute can be used to emulate a monadic f g h
Fork when combined with Compose (note the following code is not workable APL, but a series of evaluations):
g⍨∘f⍨∘h⍨ x x g⍨∘f⍨∘h x ⍝ the last ⍨ is being used monadically, i.e. Selfie x g⍨∘f⍨ h x (h x) g⍨∘f x ⍝ the last ⍨ is being used dyadically, i.e. Swap (h x) g⍨ (f x) (f x) g (h x) ⍝ the last ⍨ is being used dyadically, i.e. Swap
History
The Commute operator was defined in Operators and Functions in 1978, and taken up by NARS as a result. Dyalog, influenced by NARS, included the operator early on. While it didn't appear in SHARP APL, it was included in J as "Reflex/Passive" (~
).
External links
Lessons
Documentation