> * 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
