Scan: Difference between revisions

Jump to navigation Jump to search
440 bytes added ,  21:37, 9 September 2021
no edit summary
(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>). ==...")
 
No edit summary
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 prefixes 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>
<source 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>
</source>


== Applications ==
== Applications ==
Removing disconnected trailing 1s from a [[boolean mask]]:
Removing disconnected trailing 1s from a [[boolean]] mask:
<source lang=apl>
<source lang=apl>
       mask←1 1 1 1 0 1 1 0 0 1
       mask←1 1 1 1 0 1 1 0 0 1
Line 19: Line 19:
1 1 1 1 0 0 0 0 0 0
1 1 1 1 0 0 0 0 0 0
</source>
</source>
{{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]
 
{{APL built-ins}}[[Category:Primitive operators]]

Navigation menu