Reverse Compose: Difference between revisions
m (Adám Brudzewsky moved page Reverse compose to Reverse Compose operator: conventions) |
mNo edit summary |
||
Line 1: | Line 1: | ||
{{Built-in|Reverse | {{Built-in|Reverse Compose|⍛}}, also known as '''Before''', is a [[primitive operator]] closely related to [[Compose operator|Compose]] (<source lang=apl inline>∘</source>), also known as ''After''. Called [[dyad|dyadically]] with function operands <source lang=apl inline>f</source> and <source lang=apl inline>g</source>, it uses <source lang=apl inline>f</source> [[monad|monadically]] to pre-processes the left argument before applying <source lang=apl inline>g</source> between the pre-processed left argument and the given right argument. <source lang=apl inline>X f⍛g Y</source> is thus equivalent to <source lang=apl inline>(f X) g Y</source>. The operator can be defined as the [[dop]] <source lang=apl inline>{(⍺⍺ ⍺) ⍵⍵ ⍵}</source>. Reverse compose was introduced in [[Extended Dyalog APL]], and then adopted into [[dzaima/APL]]. | ||
== Common usage == | == Common usage == |
Revision as of 14:28, 12 February 2020
⍛
|
Reverse Compose (⍛
), also known as Before, is a primitive operator closely related to Compose (∘
), also known as After. Called dyadically with function operands f
and g
, it uses f
monadically to pre-processes the left argument before applying g
between the pre-processed left argument and the given right argument. X f⍛g Y
is thus equivalent to (f X) g Y
. The operator can be defined as the dop {(⍺⍺ ⍺) ⍵⍵ ⍵}
. Reverse compose was introduced in Extended Dyalog APL, and then adopted into dzaima/APL.
Common usage
Its plain usage is to pre-process left arguments without needing one or more applications of Commute (⍨
). For example, the square of the left argument minus the right argument can be expressed as:
3×⍨⍛-2 7
It can also be combined with Compose to create the split-compose construct. Here, we take the sign of the left argument and apply it to the absolute value of the right argument:
3 ¯1 4×⍛×∘|¯2 ¯7 1 2 ¯7 1