Abstraction of ordinal types whose values may
be used as endpoints of a span()
or measure()
.
An Enumerable
type is characterized by each element
having well-defined offset
and neighbour()
functions.
Given an instance x
of an enumerable type X
:
y
of X
with that offset, andy
is an instance of X
, then there is a
well-defined integer-valued offset of x
from y
.The offset function must satisfy:
x.offset(x) == 0
, andx.successor.offset(x) == 1
if x!=x.successor
.The neighbour function must satisfy:
x.neighbour(0) == x
,x.neighbour(n-1) == x.neighbour(n).predecessor
, andx.neighbour(n+1) == x.neighbour(n).successor
.Of course, it follows that:
x.neighbour(-1) == x.predecessor
, andx.neighbour(1) == x.successor
.An enumerable type may be linear or recursive. If X
is a linear enumerable type, then the offset function
satisfies:
x.predecessor.offset(x) == -1
if x!=x.predecessor
,x.offset(y) == -y.offset(x)
for any instance y
of X
,
andx.offset(y) == x.offset(z) + z.offset(y)
.Otherwise, X
is a recursive enumerable type with a finite
list of enumerated instances of size count
, and its
offset and neighbour functions must satisfy:
x.neighbour(count)==x
,x.offset(y) >= 0
for any instance y
of X
, andx.predecessor.offset(x) == count - 1
.A range of values of an enumerable type may be specified using:
first..last
, orfirst:length
.no type hierarchy
Attributes | |
predecessor | Source Codeshared actual default Other predecessor The predecessor of this value. Refines Ordinal.predecessor |
successor | Source Codeshared actual default Other successor The successor of this value. Refines Ordinal.successor |
Inherited Attributes |
Attributes inherited from: Object |
Attributes inherited from: Ordinal<Other> |
Methods | |
neighbour | Source Codeshared formal Other neighbour(Integer offset) The indirect successor or predecessor at the given
Throws
|
offset | Source Codeshared formal Integer offset(Other other) Compute the offset from the given value, where:
Throws
|
offsetSign | Source Codeshared default Integer offsetSign(Other other) The sign of the offset from the given value. |
Inherited Methods |
Methods inherited from: Object |