>       * What is your evaluation of the proposal?

This is an important and positive addition to the standard library. It allows 
us to quickly build ad-hoc sequences and, combined with `prefix(while:)`, 
easily simulates most of what the C-style `for` loop could do. I can easily 
imagine using this to convert complex `while let` loops like parent chain 
walking into `for` loops, create infinite sequences, prototype interesting 
generators, and do lots of other things that currently require much more work.

I especially like the way `sequence(state:next:)` is designed, with an `inout` 
state. The traditional functional design is quite awkward; this way is much 
better.

I could bikeshed the names a little—I'd prefer `sequence(first:next:)` and 
`sequence(state:each:)` to represent the slightly different roles the 
parameters have in the two calls—but ultimately this is a really solid design 
and I'm looking forward to seeing it in Swift.

>       * Is the problem being addressed significant enough to warrant a change 
> to Swift?

Yes. Enough pixels have been spilled over the C-style for loop alone. Let's put 
it to bed.

>       * Does this proposal fit well with the feel and direction of Swift?

Yes. This is a super-flexible and elegant design, inspired by functional 
programming languages but much more usable in many ways.

>       * If you have used other languages or libraries with a similar feature, 
> how do you feel that this proposal compares to those?

I've written a few loops that I would rewrite using `sequence(initial:next:)` 
now that it's available, but I've never actually used `unfold` or any 
equivalent to this function even in languages which supported them. They just 
seemed too abstract and disconnected from the problem I was trying to solve. 
`sequence(initial:next:)` avoids that problem by squarely addressing the common 
use case.

>       * How much effort did you put into your review? A glance, a quick 
> reading, or an in-depth study?

I've participated in discussions surrounding this feature from the beginning, 
including some private prototyping. (My prototype was `induce(from:while:by:)`; 
its naming turned out to be too clever by half, even in my own estimation, and 
the `while:` part turned out to be separable as `prefix(while:)`.)

-- 
Brent Royal-Gordon
Architechies

_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to