[swift-evolution] [Pitch] Moving where Clauses Out Of Parameter Lists

Brent Royal-Gordon brent at architechies.com
Wed Apr 6 19:13:04 CDT 2016


> I would actually move them as far as after everything else, and right before the definition body. For the above function that would mean:
> 
> func anyCommonElements<T, U>(lhs: T, _ rhs: U) -> Bool
>     where T : SequenceType,
>           U : SequenceType,
>           T.Generator.Element: Equatable,
>           T.Generator.Element == U.Generator.Element
> {
>     ...
> }
> 
> That would make the definition look closer to what the call site looks like.
> 
> The same would work for generic types  too:
> 
> public struct Dictionary<Key, Value>
>     where Key : Hashable
> {
>    ...
> }

Another nice thing about this style is that, in principle, I think it could be extended to specify requirements on non-type parameter values.

	func ..< <Element: Incrementable>(lhs: Element, rhs: Element) -> Range<Element>
		where Element: Comparable, lhs <= rhs {
		…
	}

I'm not saying we must or even should include that feature, merely that it gives us a nice syntactic slot to use if we choose to do so later.

-- 
Brent Royal-Gordon
Architechies



More information about the swift-evolution mailing list