Another +1 to `where` at the end. On Wed, Apr 6, 2016 at 10:33 PM, Matt Whiteside via swift-evolution < [email protected]> wrote:
> +1 to moving the `where` clause after the function signature. > > -Matt > > > On Apr 6, 2016, at 12:36, Joe Groff via swift-evolution < > [email protected]> wrote: > > > > > >> On Apr 6, 2016, at 11:30 AM, Developer via swift-evolution < > [email protected]> wrote: > >> > >> If you've ever gotten to the point where you have a sufficiently > generic interface to a thing and you need to constrain it, possibly in an > extension, maybe for a generic free function or operator, you know what a > pain the syntax can be for these kinds of operations. For example, the > Swift book implements this example to motivate where clauses > >> > >> func anyCommonElements <T: SequenceType, U: SequenceType where > T.Generator.Element: Equatable, T.Generator.Element == U.Generator.Element> > (lhs: T, _ rhs: U) -> Bool > >> > >> This is noisy and uncomfortable to my eyes, and almost impossible to > align correctly. Per a short discussion on Twitter with Joe Groff and > Erica Sadun, I'd like so see what the community feels about moving the > where clause out of the angle brackets. So that example becomes > >> > >> func anyCommonElements <T: SequenceType, U: SequenceType> > >> where T.Generator.Element: Equatable, T.Generator.Element == > U.Generator.Element > >> (lhs: T, _ rhs: U) -> Bool > >> > >> Or, if you're feeling ambitious, even > >> > >> func anyCommonElements <T, U> > >> where T : SequenceType, U : SequenceType, > >> T.Generator.Element: Equatable, T.Generator.Element == > U.Generator.Element > >> (lhs: T, _ rhs: U) -> Bool > >> > >> Thoughts? > > > > I think this is a good idea, though I would put the `where` clause after > the function signature: > > > > func foo<T: Foo, U: Bar>(x: T, y: U) -> Result<T,U> > > where T.Foo == U.Bar /*, etc. */ > > { > > } > > > > As others noted, it's also appealing to do this for type declarations > too: > > > > struct Foo<T: Foo, U: Bar> > > where T.Foo == U.Bar > > { > > } > > > > and that gives a consistent feeling with extensions and protocol > declarations. > > > > -Joe > > _______________________________________________ > > swift-evolution mailing list > > [email protected] > > https://lists.swift.org/mailman/listinfo/swift-evolution > > _______________________________________________ > swift-evolution mailing list > [email protected] > https://lists.swift.org/mailman/listinfo/swift-evolution > -- Trent Nadeau
_______________________________________________ swift-evolution mailing list [email protected] https://lists.swift.org/mailman/listinfo/swift-evolution
