# Range of discrete objects.
class Range[E: Discrete]
-special Collection[E]
+ super Collection[E]
redef readable var _first: E
redef fun iterator do return new IteratorRange[E](self)
+ redef fun iterate
+ !each(e: E)
+ do
+ var c = _first
+ var l = _last
+ while c <= l do
+ each(c)
+ c = c.succ
+ end
+ end
+
redef fun length
do
var nb = _first.distance(_after)
class IteratorRange[E: Discrete]
# Iterator on ranges.
-special Iterator[E]
+ super Iterator[E]
var _range: Range[E]
redef readable var _item: E