Partitioned Enclose: Difference between revisions

Jump to navigation Jump to search
1,113 bytes added ,  16:51, 30 December 2023
Table of extension support in various dialects
m (Text replacement - "</source>" to "</syntaxhighlight>")
(Table of extension support in various dialects)
Line 1: Line 1:
{{Built-in|Partitioned Enclose|⊂}} is a [[dyadic function]] which splits its right argument into differently sized pieces as determined by the left argument.
{{Built-in|Partitioned Enclose|⊂}} is a [[dyadic function]] which splits its right argument into differently sized pieces as determined by the left argument.
== Basic functionality ==
== Description ==
In the simplest case, and on a vector right argument, the corresponding element in the left argument indicates where '''divisions''' begin:
In the simplest case, and on a vector right argument, the corresponding element in the left argument indicates where '''divisions''' begin:
<syntaxhighlight lang=apl>
<syntaxhighlight lang=apl>
Line 9: Line 9:
</syntaxhighlight>
</syntaxhighlight>
{{Works in|[[Dyalog APL]], [[Extended Dyalog APL]]}}
{{Works in|[[Dyalog APL]], [[Extended Dyalog APL]]}}
== Non-Boolean left argument ==
=== Non-Boolean left argument ===
Almost all dialects restrict the left argument to provide only the above functionality. However, the left argument can be interpreted as a count of how many partitions begin with a particular position:
Older dialects restrict the left argument to provide only the above functionality. However, the left argument can be interpreted as a count of how many partitions begin with a particular position:
<syntaxhighlight lang=apl>
<syntaxhighlight lang=apl>
       2 0 3 0 0 0 0⊂'HiEarth'
       2 0 3 0 0 0 0⊂'HiEarth'
Line 17: Line 17:
└┴──┴┴┴─────┘
└┴──┴┴┴─────┘
</syntaxhighlight>
</syntaxhighlight>
== Short left argument ==
=== Short left argument ===
The dialects that support this extension also allow omission of trailing zeros, which is useful if the partitioning vector is generated by [[indices#Inverse|where's inverse]]:
The dialects that support this extension also allow omission of trailing zeros, which is useful if the partitioning vector is generated by [[indices#Inverse|where's inverse]]:
<syntaxhighlight lang=apl>
<syntaxhighlight lang=apl>
Line 27: Line 27:
└┴──┴┴┴─────┘
└┴──┴┴┴─────┘
</syntaxhighlight>
</syntaxhighlight>
== Long left argument ==
=== Long left argument ===
Additional trailing empty divisions are created by adding an additional division count corresponding to the position beyond the end of the right argument:
Additional trailing empty divisions are created by adding an additional division count corresponding to the position beyond the end of the right argument:
<syntaxhighlight lang=apl>
<syntaxhighlight lang=apl>
Line 35: Line 35:
└──┴─────┴┘
└──┴─────┴┘
</syntaxhighlight>
</syntaxhighlight>
== Split into lengths ==
== Split into lengths ==
This above extensions allow a simple definition of a split-into-lengths function:
The above extensions allow a simple definition of a split-into-lengths function:


[https://tio.run/##SyzI0U2pTMzJT9dNrShJzUtJTfn/qLdP/VHf1GBXvZRHbROqNQxtH3UufNS7S/NRx/JHvWvAnC1AvhVQEVABkJWSVqJg8Ki7BSKQkllcABSshQgAjdEAUuHB6uquZal5JerqGurqwanFxZn5eQFFmSABBXX1FHV1zUddi4EKnSOBvLS8YqCA@v/ggpzMEpAjHvVuVXjU1fSod4XCo94dj3oXH1pvqKAdowCkHrVNNtQB2ff/v7GCsYKJAliTgrpHfrljUWpkfqm9OgA Try it online!]
[https://tio.run/##SyzI0U2pTMzJT9dNrShJzUtJTfn/qLdP/VHf1GBXvZRHbROqNQxtH3UufNS7S/NRx/JHvWvAnC1AvhVQEVABkJWSVqJg8Ki7BSKQkllcABSshQgAjdEAUuHB6uquZal5JerqGurqwanFxZn5eQFFmSABBXX1FHV1zUddi4EKnSOBvLS8YqCA@v/ggpzMEpAjHvVuVXjU1fSod4XCo94dj3oXH1pvqKAdowCkHrVNNtQB2ff/v7GCsYKJAliTgrpHfrljUWpkfqm9OgA Try it online!]
Line 46: Line 47:
└───┴───┴────┘
└───┴───┴────┘
</syntaxhighlight>
</syntaxhighlight>
== Extension support ==
The following table shows which of the extensions to <syntaxhighlight lang=apl inline>⍺</syntaxhighlight> introduced by [[Dyalog APL 18.0]] are supported in various dialects. [[dzaima/APL]] doesn't support extended lengths but instead requires a short <syntaxhighlight lang=apl inline>⍺</syntaxhighlight>, assuming the first value is 1. This means it can't drop elements as the original Partitioned Enclose typically does, but also means it can't produce leading or trailing empty partitions.
{| class=wikitable
! Languages                !! Non-boolean !! Left argument length
|-
| [[NARS]]                  || {{No}}      || <syntaxhighlight lang=apl inline>=≢⍵</syntaxhighlight>
|-
| [[Dyalog APL]], [[April]] || {{Yes}}    || <syntaxhighlight lang=apl inline>≤1+≢⍵</syntaxhighlight>
|-
| [[dzaima/APL]]            || {{Yes}}    || <syntaxhighlight lang=apl inline>=¯1+≢⍵</syntaxhighlight> (first entry assumed 1)
|-
| [[KAP]] (<syntaxhighlight lang=apl inline>⊆</syntaxhighlight>) || {{Yes}}          || <syntaxhighlight lang=apl inline>=≢⍵</syntaxhighlight>
|}
== See also ==
== See also ==
* [[Partition]]
* [[Partition]]

Navigation menu