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

Ross O'Brien narrativium+swift at gmail.com
Wed Apr 6 19:28:47 CDT 2016


I'm hoping this extends to type values.

struct StructWithClosure
{
   let closure : (lhs: Element, rhs:Element) -> Range<Element> where
Element : Incrementable, Comparable
}

or for that matter, protocol values:

struct StructWithIntCollectionType
{
    let collection : C where C : CollectionType, C.Element == Int
}


On Thu, Apr 7, 2016 at 1:13 AM, Brent Royal-Gordon via swift-evolution <
swift-evolution at swift.org> wrote:

> > 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
>
> _______________________________________________
> swift-evolution mailing list
> swift-evolution at swift.org
> https://lists.swift.org/mailman/listinfo/swift-evolution
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20160407/805e0959/attachment.html>


More information about the swift-evolution mailing list