Range: Difference between revisions

Jump to navigation Jump to search
63 bytes added ,  21:33, 10 September 2022
m
Text replacement - "<source" to "<syntaxhighlight"
(Disambiguate)
m (Text replacement - "<source" to "<syntaxhighlight")
Line 1: Line 1:
:''This page is about the dyadic primitive function. "Range" refers to [[Unique]] in K and [[Index Generator]] in BQN.''
:''This page is about the dyadic primitive function. "Range" refers to [[Unique]] in K and [[Index Generator]] in BQN.''


{{Built-ins|Range|…|..}} or '''Sequence''' is a [[dyadic]] [[primitive function]] which creates a [[vector]] of consecutive integers based on the start and end values given by its [[argument|arguments]]. It serves as an [[index origin]]-agnostic alternative to [[Index Generator]] for creating a range of numbers. Range is currently implemented in [[NARS2000]] (using the digraph <source lang=apl inline>..</source>), [[Extended Dyalog APL]], and [[dzaima/APL]].
{{Built-ins|Range|…|..}} or '''Sequence''' is a [[dyadic]] [[primitive function]] which creates a [[vector]] of consecutive integers based on the start and end values given by its [[argument|arguments]]. It serves as an [[index origin]]-agnostic alternative to [[Index Generator]] for creating a range of numbers. Range is currently implemented in [[NARS2000]] (using the digraph <syntaxhighlight lang=apl inline>..</source>), [[Extended Dyalog APL]], and [[dzaima/APL]].


== Basic usage ==
== Basic usage ==
Line 7: Line 7:
If both arguments are [[scalar]] integers, Range creates the consecutive range between the two arguments inclusive. If the left argument is greater than the right argument, the result becomes a decreasing sequence.
If both arguments are [[scalar]] integers, Range creates the consecutive range between the two arguments inclusive. If the left argument is greater than the right argument, the result becomes a decreasing sequence.


<source lang=apl>
<syntaxhighlight lang=apl>
       3…8
       3…8
3 4 5 6 7 8
3 4 5 6 7 8
Line 16: Line 16:
</source>{{Works in|[[NARS2000]], [[Extended Dyalog APL]], [[dzaima/APL]]}}
</source>{{Works in|[[NARS2000]], [[Extended Dyalog APL]], [[dzaima/APL]]}}


It should be noted that, since the exact definition of Range has never been standardised, a different implementation might as well choose to return <source lang=apl inline>⍬</source> or even throw a [[DOMAIN ERROR]] for <source lang=apl inline>X…Y</source> when <source lang=apl inline>X>Y</source>.
It should be noted that, since the exact definition of Range has never been standardised, a different implementation might as well choose to return <syntaxhighlight lang=apl inline>⍬</source> or even throw a [[DOMAIN ERROR]] for <syntaxhighlight lang=apl inline>X…Y</source> when <syntaxhighlight lang=apl inline>X>Y</source>.


== Extensions ==
== Extensions ==
Line 22: Line 22:
[[NARS2000]] supports step size and multi-dimensional range (giving the result similar to multi-dimensional [[Index Generator]]):
[[NARS2000]] supports step size and multi-dimensional range (giving the result similar to multi-dimensional [[Index Generator]]):


<source lang=apl>
<syntaxhighlight lang=apl>
       3 2..10  ⍝ Start, step, and end values
       3 2..10  ⍝ Start, step, and end values
3 5 7 9
3 5 7 9
Line 47: Line 47:
In [[Extended Dyalog APL]], the extension is focused on making it easier to produce integer or character vector constants:
In [[Extended Dyalog APL]], the extension is focused on making it easier to produce integer or character vector constants:


<source lang=apl>
<syntaxhighlight lang=apl>
       1…10 20…100 80…0
       1…10 20…100 80…0
1 2 3 4 5 6 7 8 9 10 20 30 40 50 60 70 80 90 100 80 60 40 20 0
1 2 3 4 5 6 7 8 9 10 20 30 40 50 60 70 80 90 100 80 60 40 20 0

Navigation menu