Beside: Difference between revisions

From APL Wiki
Jump to navigation Jump to search
mNo edit summary
m (Text replacement - "</source>" to "</syntaxhighlight>")
Line 1: Line 1:
{{Built-in|Beside|∘}}, '''Compose''' or '''After''' is a [[primitive operator]]. It shares the glyph [[Jot]] (<source lang=apl inline>∘</source>) with [[Bind]]. Called [[Dyadic function|dyadically]] with function [[operand]]s <source lang=apl inline>f</source> and <source lang=apl inline>g</source>, it uses <source lang=apl inline>g</source> [[Monadic function|monadically]] to pre-processes the right argument before applying <source lang=apl inline>f</source> to the given left argument and pre-processed right argument. Called [[Monadic function|monadically]] with operands <source lang=apl inline>f</source> and <source lang=apl inline>g</source>, it applies <source lang=apl inline>f</source> to the result of applying <source lang=apl inline>g</source> to the argument.
{{Built-in|Beside|∘}}, '''Compose''' or '''After''' is a [[primitive operator]]. It shares the glyph [[Jot]] (<source lang=apl inline>∘</syntaxhighlight>) with [[Bind]]. Called [[Dyadic function|dyadically]] with function [[operand]]s <source lang=apl inline>f</syntaxhighlight> and <source lang=apl inline>g</syntaxhighlight>, it uses <source lang=apl inline>g</syntaxhighlight> [[Monadic function|monadically]] to pre-processes the right argument before applying <source lang=apl inline>f</syntaxhighlight> to the given left argument and pre-processed right argument. Called [[Monadic function|monadically]] with operands <source lang=apl inline>f</syntaxhighlight> and <source lang=apl inline>g</syntaxhighlight>, it applies <source lang=apl inline>f</syntaxhighlight> to the result of applying <source lang=apl inline>g</syntaxhighlight> to the argument.


In usage, <source lang=apl inline>X f∘g Y</source> is equivalent to <source lang=apl inline>X f g Y</source>, and <source lang=apl inline>f∘g Y</source> is equivalent to <source lang=apl inline>f g Y</source>. Thus, beside can be defined as the [[dop]] <source lang=apl inline>{⍺←⊢ ⋄ ⍺ ⍺⍺ ⍵⍵ ⍵}</source>.
In usage, <source lang=apl inline>X f∘g Y</syntaxhighlight> is equivalent to <source lang=apl inline>X f g Y</syntaxhighlight>, and <source lang=apl inline>f∘g Y</syntaxhighlight> is equivalent to <source lang=apl inline>f g Y</syntaxhighlight>. Thus, beside can be defined as the [[dop]] <source lang=apl inline>{⍺←⊢ ⋄ ⍺ ⍺⍺ ⍵⍵ ⍵}</syntaxhighlight>.


== Examples ==
== Examples ==
When used [[monadic]]ally, <source lang=apl inline>f∘g</source> behaves the same as an [[atop]]:
When used [[monadic]]ally, <source lang=apl inline>f∘g</syntaxhighlight> behaves the same as an [[atop]]:


<source lang=apl>
<source lang=apl>
Line 12: Line 12:
       -(÷2)
       -(÷2)
¯0.5
¯0.5
</source>
</syntaxhighlight>


When used [[dyadic]]ally, <source lang=apl inline>f∘g</source> forms a dyadic [[hook]]:
When used [[dyadic]]ally, <source lang=apl inline>f∘g</syntaxhighlight> forms a dyadic [[hook]]:


<source lang=apl>
<source lang=apl>
Line 22: Line 22:
       'oy'≡⌽'yo'
       'oy'≡⌽'yo'
1
1
</source>
</syntaxhighlight>


When used monadically with [[Commute]], <source lang=apl inline>f∘g</source> forms a monadic [[hook]]:
When used monadically with [[Commute]], <source lang=apl inline>f∘g</syntaxhighlight> forms a monadic [[hook]]:
<source lang=apl>
<source lang=apl>
       ≡∘⌽⍨'UwU'
       ≡∘⌽⍨'UwU'
Line 34: Line 34:
       'UwU'≡⌽'UwU'
       'UwU'≡⌽'UwU'
1
1
</source>
</syntaxhighlight>


== External links ==
== External links ==

Revision as of 21:40, 10 September 2022

Beside (), Compose or After is a primitive operator. It shares the glyph Jot (<source lang=apl inline>∘</syntaxhighlight>) with Bind. Called dyadically with function operands <source lang=apl inline>f</syntaxhighlight> and <source lang=apl inline>g</syntaxhighlight>, it uses <source lang=apl inline>g</syntaxhighlight> monadically to pre-processes the right argument before applying <source lang=apl inline>f</syntaxhighlight> to the given left argument and pre-processed right argument. Called monadically with operands <source lang=apl inline>f</syntaxhighlight> and <source lang=apl inline>g</syntaxhighlight>, it applies <source lang=apl inline>f</syntaxhighlight> to the result of applying <source lang=apl inline>g</syntaxhighlight> to the argument.

In usage, <source lang=apl inline>X f∘g Y</syntaxhighlight> is equivalent to <source lang=apl inline>X f g Y</syntaxhighlight>, and <source lang=apl inline>f∘g Y</syntaxhighlight> is equivalent to <source lang=apl inline>f g Y</syntaxhighlight>. Thus, beside can be defined as the dop <source lang=apl inline>{⍺←⊢ ⋄ ⍺ ⍺⍺ ⍵⍵ ⍵}</syntaxhighlight>.

Examples

When used monadically, <source lang=apl inline>f∘g</syntaxhighlight> behaves the same as an atop:

<source lang=apl>

     -∘÷ 2 

¯0.5

     ⍝ same as
     -(÷2)

¯0.5 </syntaxhighlight>

When used dyadically, <source lang=apl inline>f∘g</syntaxhighlight> forms a dyadic hook:

<source lang=apl>

     'oy'≡∘⌽'yo'

1

     ⍝ same as
     'oy'≡⌽'yo'

1 </syntaxhighlight>

When used monadically with Commute, <source lang=apl inline>f∘g</syntaxhighlight> forms a monadic hook: <source lang=apl>

     ≡∘⌽⍨'UwU'

1

     ⍝ same as this, because operators are left-associative, unlike functions which are right-associative
     (≡∘⌽)⍨'UwU'

1

     ⍝ same as
     'UwU'≡⌽'UwU'

1 </syntaxhighlight>

External links

Lessons

Documentation


APL built-ins [edit]
Primitives (Timeline) Functions
Scalar
Monadic ConjugateNegateSignumReciprocalMagnitudeExponentialNatural LogarithmFloorCeilingFactorialNotPi TimesRollTypeImaginarySquare RootRound
Dyadic AddSubtractTimesDivideResiduePowerLogarithmMinimumMaximumBinomialComparison functionsBoolean functions (And, Or, Nand, Nor) ∙ GCDLCMCircularComplexRoot
Non-Scalar
Structural ShapeReshapeTallyDepthRavelEnlistTableCatenateReverseRotateTransposeRazeMixSplitEncloseNestCut (K)PairLinkPartitioned EnclosePartition
Selection FirstPickTakeDropUniqueIdentityStopSelectReplicateExpandSet functions (IntersectionUnionWithout) ∙ Bracket indexingIndexCartesian ProductSort
Selector Index generatorGradeIndex OfInterval IndexIndicesDealPrefix and suffix vectors
Computational MatchNot MatchMembershipFindNub SieveEncodeDecodeMatrix InverseMatrix DivideFormatExecuteMaterialiseRange
Operators Monadic EachCommuteConstantReplicateExpandReduceWindowed ReduceScanOuter ProductKeyI-BeamSpawnFunction axisIdentity (Null, Ident)
Dyadic BindCompositions (Compose, Reverse Compose, Beside, Withe, Atop, Over) ∙ Inner ProductDeterminantPowerAtUnderRankDepthVariantStencilCutDirect definition (operator)Identity (Lev, Dex)
Quad names Index originComparison toleranceMigration levelAtomic vector