> On Dec 30, 2015, at 3:57 PM, Kevin Ballard via swift-evolution 
> <[email protected]> wrote:
> 
> It's sometimes useful to get the first element of a sequence. To that end I'd 
> like to propose
>  
> extension SequenceType {
>     /// Returns the first element of `self`, or `nil` if `self` is empty.
>     /// - Complexity: O(1)
>     var first: Self.Generator.Element? {
>         var gen = generate()
>         return gen.next()
>     }
> }
>  
> I think it makes sense to add this property to the definition of SequenceType 
> as well, so various sequences can override it to avoid constructing a 
> generator.
>  
> With this added to SequenceType, we can remove it from CollectionType, as the 
> behavior will be the same.

Property accesses should not mutate the receiver, and because of how Sequences 
work, inspecting first may consume the first element. I suggest you consider 
adding a BufferedSequence<Base: SequenceType> that has a stable first property 
(at least until it is iterated)

Another related adapter I’d like to add is a model of CollectionType that is 
backed by a sequence and lazily populated in fixed-sized chunks.


-Dave

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

Reply via email to