Streams

Produces the elements of a stream. For example, this class has an `Iterator` that produces the integers from `min` to `max`:

    class IntegerIterable(Integer min, Integer max)
           satisfies {Integer*} {
       iterator() => object satisfies Iterator<Integer> {
           variable value i = min;
           next() => i<=max then i++ else finished;
       };
    }

An iterator is exhausted when `next()` produces the value `finished`.

By: Gavin
See also `Iterable`

no type hierarchy

no supertypes hierarchy

- `Iterator`
  - `emptyIterator`

Inherited Attributes
Attributes inherited from: `Object` `hash`, `string`

Methods
`next` | Source Code `shared formal Element|Finished next()` The next element, or `finished` if there are no more elements to be iterated. Repeated invocations of `next()` for a given iterator must eventually produce any given element of the stream to which the iterator belongs. A given iterator must not produce the same element of the stream more often than the element occurs in the stream. If an invocation of `next()` for a given iterator produces the value `finished`, then every future invocation of `next()` for that iterator must also produce the value `finished`. An iterator for a nonfinite stream may never produce the value `finished`. An iterator for a nonempty stream must produce at least one value of type `Element`.

Inherited Methods
Methods inherited from: `Object` `equals()`