Commute
⍨
|
Commute (⍨
), or ⊂
in SHARP APL, 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 with glyph ⍨
in Operators and Functions in 1978, and taken up by NARS as a result. Dyalog, influenced by NARS, included the operator early on. SHARP APL later added the operator with glyph ⊂
, and it was included in J as "Reflex/Passive" (~
). The ISO/IEC 13751:2001 standard included the operator as defined in NARS, although it was unsupported by mainstream dialects such as APLX and APL+Win at the time,[1] and remains unsupported by APL2.
External links
Lessons
Documentation
References
- ↑ F.H.D. van Batenburg. Conformity of APL Implementations to the ISO APL Standard. Vector journal Volume 21, No.3. 2005-05.