Rewinding iterators

Tab Atkins Jr. jackalmage at gmail.com
Wed Apr 9 15:30:27 PDT 2014


On Wed, Apr 9, 2014 at 1:51 PM, Marcus Stade <marcus at stade.se> wrote:
> I don't think I'm making my case very clear, my apologies. Hopefully, I'll
> be able to clarify in this message.
>
>
>> No enforcement is required by the specification.  If you create an
>> iterator that doesn't fully conform to the iterator interface specification
>> and then get surprising results, its your fault, not the implementation's.
>
>
> This is the very point I'm trying to make: the spec uses language such as
> "must" when declaring how iterators should behave, yet an implementation
> isn't as you say required to enforce such behavior. In this case, I am
> getting "surprising results" because the spec seems to say that the way I've
> implemented the iterators above is flat out wrong; yet, the code runs just
> fine and sugar such as `for..of` is working just as it would with a fully
> conforming iterator. If it quacks like a duck..
>
> I might be reaching, but I do think the language is confusing. If the intent
> is to convey a practice or precedence set by the built in iterators, then
> perhaps it's better to make this explicit or use words such as "recommended"
> instead of "must". Perhaps I'm bike shedding, in which case I apologize. I
> hope I've made my point clearer any way.
>
> Ps. I like what Scott's saying, which I think is pretty much what I'm trying
> to say as well, albeit I'm doing a poorer job at it.

There's nothing wrong with authoring conformance requirements using
MUST, but if it's unclear that they're for the author, that's a bug to
be fixed in the spec language.

But as others have said, I don't see why this is an authoring
conformance criteria at all.  It's reasonable for the spec to state
that all the built-in iterators are well-behaved in this respect, and
to recommend that author-defined iterators are well-behaved as well
(unless they have some behavior like rewindability), but requiring it
as conformance criteria seems incorrect (because of the rewindability
thing).

~TJ


More information about the es-discuss mailing list