Lisp-like sequence abstraction for arbitrary types using first & next operations only.
remarks
Unlike ES6 iterators this approach does not conflate both operations and first() can be called any number of times to obtain the current value (if any) from the sequence.
Returns the sequence's first value or undefined if there're no further values.
remarks
If the sequence is guaranteed to not include undefined values, a simple check for seq.first() === undefined is sufficient to determine the end. If the sequence DOES contain undefined values, the check should use seq.next().
Lisp-like sequence abstraction for arbitrary types using
first
&next
operations only.Unlike ES6 iterators this approach does not conflate both operations and
first()
can be called any number of times to obtain the current value (if any) from the sequence.