> 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