sequence function: range
description:
range(sp, sp)
range(sp, sp, ket)
the range function
examples:
-- range between 1 and 10:
range(|1>, |10>)
|1> + |2> + |3> + |4> + |5> + |6> + |7> + |8> + |9> + |10>
-- range between 1 and 5, using step of 0.5:
range(|1>, |5>, |0.5>)
|1> + |1.5> + |2> + |2.5> + |3> + |3.5> + |4> + |4.5> + |5>
-- specify a category, in this case 'year':
range(|year: 1981>, |year: 1985>)
|year: 1981> + |year: 1982> + |year: 1983> + |year: 1984> + |year: 1985>
-- specify the 'number' category:
range(|number: 7>, |number: 13>)
|number: 7> + |number: 8> + |number: 9> + |number: 10> + |number: 11> + |number: 12> + |number: 13>
-- if the categories are not the same, return the don't know ket |>
range(|number: 3>, |price: 7>)
|>
-- reverse-range, with step size 2, from 2018 to 2014:
range(|year: 2018>, |year: 2014>, |year: -2>)
|year: 2018> + |year: 2016> + |year: 2014>
-- if you need a sequence instead of a superposition, use sp2seq:
sp2seq range(|number: 17>, |number: 23>)
|number: 17> . |number: 18> . |number: 19> . |number: 20> . |number: 21> . |number: 22> . |number: 23>
-- alternatively, you can define the srange function:
srange (*,*) #=> sp2seq range(|_self1>, |_self2>)
srange (*,*,*) #=> sp2seq range(|_self1>, |_self2>, |_self3>)
srange(|5>, |9>)
|5> . |6> . |7> . |8> . |9>
srange(|17>, |23>, |2>)
|17> . |19> . |21> . |23>
-- filter down to prime numbers:
-- due to a quirk, which we might change later, you need a literal operator wrapper around a function operator:
is-prime |*> #=> is-prime |_self>
-- now find our primes:
such-that[is-prime] range(|2>, |40>)
|2> + |3> + |5> + |7> + |11> + |13> + |17> + |19> + |23> + |29> + |31> + |37>
see also:
sp2seq
Home