> On 06 Apr 2016, at 21:30, Developer via swift-evolution 
> <swift-evolution@swift.org> 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.

+1 already!

> 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

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
{
   ...
}

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

Reply via email to