Ranges

Generic ranges for any value that is Ordered. Range objects are Enumerable.

Range  Object

An object containing a range's beginning, end, and exclusivity.

a .. b  Range

Create an inclusive Range from a to b.

a ... b  Range

Create an exclusive Range from a to b.

r start  any
  | r is-a?: Range

The start of the range.

Example:

> ($a .. $z) start
$a
r end  any
  | r is-a?: Range

The end of the range.

Example:

> ($a .. $z) end
$z
r exclusive?  Boolean
  | r is-a?: Range

Is a range exclusive?

Example:

> ($a .. $z) exclusive?
False
> ($a ... $z) exclusive?
True
r matches?: x  Boolean
  | r is-a?: Range

Test if x is within the bounds of the range. This is useful for case-of:.

Example:

> ($a .. $z) matches?: $z
True
> ($a ... $z) matches?: $z
False
> $z case-of: { $a .. $w -> @foo; $x .. $z -> @bar }
@bar
r step &size: 1  List
  | r is-a?: Range

Returns a list of the values in the range, increasing by size.

Example:

> ($a .. $f) step
[$a, $b, $c, $d, $e, $f]
> ($a .. $f) step &size: 2
[$a, $c, $e]
r step: action &size: 1  List
  | r is-a?: Range

Returns a list of the values in the range, increasing by size, sent to action.

Example:

> ($a .. $f) step: @show
["$a", "$b", "$c", "$d", "$e", "$f"]
> ($a .. $f) step: @show &size: 2
["$a", "$c", "$e"]
r collect: action  List
  | r is-a?: Range

Alias for step:.