[swift-evolution] [Proposal] Change guarantee for GeneratorType.next() to always return nil past end

Erica Sadun erica at ericasadun.com
Wed Mar 16 10:24:22 CDT 2016


On Mar 8, 2016, at 7:29 PM, Kevin Ballard via swift-evolution <swift-evolution at swift.org> wrote:
> 
> One minor change to what I've been proposing: Instead of merely saying that it's implementation-defined, we should expressly say that invoking next() after it has previously returned nil may return nil or it may return an implementation-defined value, but it should not fatalError() (unless some other GeneratorType requirement has been violated). Which is to say, after a GeneratorType has returned nil from next(), it should always be safe to invoke next() again, it's just up to the particular implementation to determine what value I get by doing that.
> 
> -Kevin Ballard

I'm torn about sequences that end with nil and should continue always return nil thereafter and 
(pulling a name out of the air) "samples" that may return nil or non-nil values over time. I'd prefer there
 to be two distinct contracts between an iterator and another construct that may return an implementation-defined
value after nil.

Otherwise, I'm agreed that there should not be a precondition or fatal error (unless another
requirement was violated.)

-- Erica


More information about the swift-evolution mailing list