Should all GeneratorTypes also be SequenceTypes?


(Haravikk) #1

There are quite a lot of generator implementations that also implement SequenceType (since it’s as simple as returning self). Indeed, the AnyGenerator type conforms to SequenceType, allowing any generator to be wrapped as a sequence, though I imagine this comes with some overhead. So it got me thinking, why doesn’t GeneratorType just require conformance to SequenceType? It would be extremely simple to provide the default implementation (return self like I say), and allow all generators to be passed seamlessly into functions that take sequences, without having to wrap them first. It also gives access to the same rich set of methods to generators directly.

I can’t really think of any reason not to do this, which is why I wanted to ask first, as I thought perhaps there’s something I’m missing. The only things I can think of are destructive sequences or generators implemented by classes (both of which could result in different references getting different elements, or one being consumed before it is used), however this is something that already requires clear documentation, since I could fall into the same trap using AnyGenerator anyway.


(Dmitri Gribenko) #2

Because of compiler bugs. We have the default implementation in the
library already, we just can't declare the conformance.

Dmitri

···

On Mon, Mar 14, 2016 at 4:42 PM, Haravikk via swift-evolution <swift-evolution@swift.org> wrote:

There are quite a lot of generator implementations that also implement SequenceType (since it’s as simple as returning self). Indeed, the AnyGenerator type conforms to SequenceType, allowing any generator to be wrapped as a sequence, though I imagine this comes with some overhead. So it got me thinking, why doesn’t GeneratorType just require conformance to SequenceType?

--
main(i,j){for(i=2;;i++){for(j=2;j<i;j++){if(!(i%j)){j=0;break;}}if
(j){printf("%d\n",i);}}} /*Dmitri Gribenko <gribozavr@gmail.com>*/


(Dave Abrahams) #3

Ahem: not-yet-implemented features :-).

Dave

···

on Mon Mar 14 2016, Dmitri Gribenko <swift-evolution@swift.org> wrote:

On Mon, Mar 14, 2016 at 4:42 PM, Haravikk via swift-evolution > <swift-evolution@swift.org> wrote:

There are quite a lot of generator implementations that also
implement SequenceType (since it’s as simple as returning
self). Indeed, the AnyGenerator type conforms to SequenceType,
allowing any generator to be wrapped as a sequence, though I imagine
this comes with some overhead. So it got me thinking, why doesn’t
GeneratorType just require conformance to SequenceType?

Because of compiler bugs.