[swift-evolution] Proposal: Add generator functions to the language

Bouke Haarsma bouke at haarsma.eu
Sat Sep 9 03:16:35 CDT 2017


It'd be interesting to see if we can add some sort support for 
generator functions / yield functions to the language. As I believe we 
currently can only have a callback-style generator in which we have to 
manage the generator's state ourselves. It would be great to be able to 
use `yield` and not have to manage the state manually.

--Bouke

On 2015-12-13 22:32:06 +0000, Chris Lattner said:

>> 
>> On Dec 12, 2015, at 12:35 PM, Douglas Gregor via swift-evolution 
>> <swift-evolution at swift.org> wrote:
>> 
>> 
>>> On Dec 11, 2015, at 10:48 PM, Kevin Ballard via swift-evolution 
>>> <swift-evolution at swift.org <mailto:swift-evolution at swift.org>> 
>>> wrote:
>>> 
>>> I'd love to have first-class support for generators like this, but it's 
>>> a lot of work. It's a lot easier to do this sort of thing in a 
>>> scripting language like Python than it is to do in a language like 
>>> Swift, because it requires reifying the stack into a data structure 
>>> that can be passed around. And I suspect there's a lot of non-trivial 
>>> questions that have to get answered before you can even propose an 
>>> implementation for this.
>>> 
>>> For context, this sort of thing is something that people have been 
>>> talking about doing in Rust for quite a while, and it keeps getting 
>>> punted because of the amount of work and the unanswered questions about 
>>> how it would actually be implemented.
>>> 
>>> So I'll give this a general +1, but I think it should also be deferred 
>>> until after Swift 3 at the earliest.
>> 
>> Right. This is a major add-on feature that doesn’t fit in with the 
>> stated goals for Swift 3 (README of 
>> https://github.com/apple/swift-evolution 
>> <https://github.com/apple/swift-evolution>), so I think we should 
>> proactively defer it.
> 
> I agree with both of you.  I’m very interested in this, but it is 
> clearly out of scope for Swift 3.  It should also be considered 
> alongside whatever async/concurrency approach we tackle (likely in 
> swift 4).
> 
> -Chris
> 
> -------------- next part --------------
> An HTML attachment was scrubbed...
> URL: 
> <https://lists.swift.org/pipermail/swift-evolution/attachments/20151213/4d8e5a36/attachment.html> 
> 




More information about the swift-evolution mailing list