Scan: Difference between revisions

From APL Wiki
Jump to navigation Jump to search
(Created page with "{{Built-in|Scan|<nowiki>\</nowiki>}} is a monadic operator which takes a dyadic functions and produce a monadic function (<source lang=apl inline>\</source>). ==...")
 
m (Text replacement - "</source>" to "</syntaxhighlight>")
 
(4 intermediate revisions by 2 users not shown)
Line 1: Line 1:
{{Built-in|Scan|<nowiki>\</nowiki>}} is a [[monadic operator]] which takes a [[dyadic function]]s and produce a [[monadic function]] (<source lang=apl inline>\</source>).
{{Built-ins|Scan|<nowiki>\</nowiki>|⍀}} is a [[primitive operator|primitive]] [[monadic operator]] which takes a [[dyadic function]] [[operand]] and produces a [[monadic function]] which is equivalent to the [[reduce|reductions]] of the [[prefix]]es of the arguments. This operation is known as also known as cumulative reduction.


== Explanation ==
== Explanation ==
[[Scan]] is similar to [[Reduce]], however all the intermediate results will be retained. That being said, unlike [[Reduce]], [[Scan]] does not reduce the number of elements, i.e. performing [[Scan]] over a 10-elements [[array]] will produce a 10-elements [[array]].  
Scan is similar to Reduce, however all the intermediate results will be retained. That being said, unlike [[Reduce]], [[Scan]] does not reduce the [[rank]] of its argument, i.e. performing a scan over an N-dimensional [[array]] will produce an N-dimensional array.  


== Examples ==
== Examples ==
<source lang=apl>
<syntaxhighlight lang=apl>
       +\⍳5 ⍝ plus-scan over range of integer from 1 to 5
       +\⍳5 ⍝ plus-scan over range of integers from 1 to 5
1 3 6 10 15
1 3 6 10 15
</source>
</syntaxhighlight>


== Applications ==
== Applications ==
Removing disconnected trailing 1s from a [[boolean mask]]:
Removing disconnected trailing 1s from a [[boolean]] mask:
<source lang=apl>
<syntaxhighlight lang=apl>
       mask←1 1 1 1 0 1 1 0 0 1
       mask←1 1 1 1 0 1 1 0 0 1
       mask
       mask
Line 18: Line 18:
       ∧\mask ⍝ and-scan mask
       ∧\mask ⍝ and-scan mask
1 1 1 1 0 0 0 0 0 0
1 1 1 1 0 0 0 0 0 0
</source>
</syntaxhighlight>
{{APL built-ins}}[[Category:Primitive operators]][[Category:Composition operators]]
== External links ==
=== Lessons ===
* [https://chat.stackexchange.com/rooms/52405/conversation/lesson-3-some-apl-operators-----#40898948 APL Cultivation]
=== Documentation ===
* [https://help.dyalog.com/latest/#Language/Primitive%20Operators/Scan.htm Dyalog]
* [https://microapl.com/apl_help/ch_020_020_820.htm APL]
* [https://mlochbaum.github.io/BQN/doc/scan.html BQN]
 
{{APL built-ins}}[[Category:Primitive operators]]

Latest revision as of 21:02, 10 September 2022

\

Scan (\, ) is a primitive monadic operator which takes a dyadic function operand and produces a monadic function which is equivalent to the reductions of the prefixes of the arguments. This operation is known as also known as cumulative reduction.

Explanation

Scan is similar to Reduce, however all the intermediate results will be retained. That being said, unlike Reduce, Scan does not reduce the rank of its argument, i.e. performing a scan over an N-dimensional array will produce an N-dimensional array.

Examples

      +\⍳5 ⍝ plus-scan over range of integers from 1 to 5
1 3 6 10 15

Applications

Removing disconnected trailing 1s from a boolean mask:

      mask←1 1 1 1 0 1 1 0 0 1
      mask
1 1 1 1 0 1 1 0 0 1
      ∧\mask ⍝ and-scan mask
1 1 1 1 0 0 0 0 0 0

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