[swift-dev] [swift-corelibs-dev] LazySequenceType: make prefix return a lazy collection

Tony Parker anthony.parker at apple.com
Mon Jan 4 16:21:04 CST 2016


Hi Mark,

I’m going to loop in the swift-dev list for this question.

- Tony

> On Jan 4, 2016, at 5:15 AM, Mark Aron Szulyovszky via swift-corelibs-dev <swift-corelibs-dev at swift.org> wrote:
> 
> Hi,
> 
> I came across hit issue while chaining filter() and prefix() on lazy sequences:
> https://bugs.swift.org/browse/SR-461 <https://bugs.swift.org/browse/SR-461>
> 
> And started wondering if it would be more consistent if lazy.filter().prefix() returned a custom LazySequenceType<Generator.Element> instead of Slice<LazyFilterCollection<Range<Generator.Element>>>.
> 
> That way lazy.filter().prefix() could be used to chain pure lazy operations, which can be actually quite useful in some cases.
> 
> I understand that this has implications, and it would make prefix() less consistent in terms of return type, but it would eliminate confusion like SR-461 <https://bugs.swift.org/browse/SR-461>.
> Also, this wouldn't be a much different than how how lazy.filter() is implemented, since it also returns a custom LazySequenceType instead of SequenceType.
> 
> Has this been considered before? Would there be any cases where this would create unintended side effects?
> As far as I see, it wouldn't change the meaning of prefix(), only would it extend its usefulness. 
> 
> I submitted a PR to the SwiftSequence library that demonstrates the implementation of this: https://github.com/itchingpixels/SwiftSequence/commit/26101e5aec6c266048bbad4db7b44b9c453f07ca <https://github.com/itchingpixels/SwiftSequence/commit/26101e5aec6c266048bbad4db7b44b9c453f07ca>
> 
> And I'm happy to contribute to contribute it to stdlib if people find it useful.
> 
> Thanks a lot!
> 
> Mark
>  _______________________________________________
> swift-corelibs-dev mailing list
> swift-corelibs-dev at swift.org
> https://lists.swift.org/mailman/listinfo/swift-corelibs-dev

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-dev/attachments/20160104/9c72da08/attachment.html>


More information about the swift-dev mailing list