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

Shawn Erickson shawnce at gmail.com
Wed Apr 6 13:37:54 CDT 2016


On Wed, Apr 6, 2016 at 11:36 AM Pyry Jahkola via swift-evolution <
swift-evolution at swift.org> wrote:

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

I very much like this suggestion.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20160406/84758eb5/attachment.html>


More information about the swift-evolution mailing list