[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