> On May 27, 2016, at 12:05 PM, Charles Srstka via swift-evolution 
> <swift-evolution@swift.org> wrote:
> 
>> On May 27, 2016, at 9:31 AM, plx via swift-evolution 
>> <swift-evolution@swift.org <mailto:swift-evolution@swift.org>> wrote:
>> 
>> For the Sequence/Collection it’s a lot of work for IMHO a rather minor 
>> convenience, but for more-complex type associated-type relationships it 
>> could start to pay its own way.
> 
> Is it really that minor, though? For something so commonly encountered as 
> methods that take sequences/collections, this:
> 
> func doSomething(foos: [Foo], bars: [Bar], bazzes: [Baz])
> 
> is not only a whole lot easier to type, but is worlds clearer to read than:
> 
> func doSomething<S: SequenceType, T: SequenceType, U: SequenceType where 
> S.Generator.Element == Foo, T.Generator.Element == Bar, U.Generator.Element 
> == Baz>(foos: S, bars: T, bazzes: U)
> 
> Not only is the latter line intimidating to look at as is, but it separates 
> the contained type from the parameters themselves. Given how unwieldy this 
> second form is, it seems almost certain that the former line will be used 
> more frequently in the real world.

When generalized existentials are introduced (Austin Zheng has a proposal for 
this) you will be able to do this (assuming we switch to the `&` syntax:

typealias SequenceOf<T> = Sequence where .Element == T

func doSomething(foos: SequenceOf<Foo>, bars: SequenceOf<Bar>, bazzes: 
SequenceOf<Baz>)

It’s still slightly more verbose than the array shorthand, but it’s a far cry 
from what you have to do with generics today.

If you wanted it to be generic you could write it as:

func doSomething<S: SequenceOf<Foo>, T: SequenceOf<Bar>, SequenceOf<Baz>(foos: 
S, bars: T, bazzes: U)

> 
> Charles
> 
> _______________________________________________
> swift-evolution mailing list
> swift-evolution@swift.org
> https://lists.swift.org/mailman/listinfo/swift-evolution

_______________________________________________
swift-evolution mailing list
swift-evolution@swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to