Do you think there’s room for a more general Pattern Synonyms-like <https://ghc.haskell.org/trac/ghc/wiki/PatternSynonyms> feature that could extend this to things that look tuple-y? We had a short conversation on Twitter 'round about the release of Swift 1.2 about Swiftz’s HList <https://github.com/typelift/Swiftz/blob/master/Sources/HList.swift#L185> implementation and my desire to be able to destructure them into tuples for native pattern matching.
~Robert Widmann > On Dec 22, 2016, at 9:46 AM, Joe Groff via swift-evolution > <[email protected]> wrote: > >> >> On Dec 17, 2016, at 9:43 PM, Mathew Sanders via swift-evolution >> <[email protected]> wrote: >> >> I've just joined the list (hi!) so not sure if this has been discussed in >> the past. >> >> Curious to hear if a future version of Swift might ever include some sort of >> pattern-matching extended to Arrays. Maybe something like the following: >> >> let numbers: [Int] >> >> switch numbers { >> case []: >> // to match an empty array >> >> case [1, 2, 3]: >> // to match array with specific values >> >> case [_, _, _]: >> // to match array with 3 Ints >> >> case let [first, last]: >> // match a 2 element array and bind first and last elements >> >> case let [first, next...]: >> // to match array with at least one element >> // bind first element, and bind other elements (could be empty) >> // first: Int, next: [Int] >> } >> >> I love the pattern matching on tuples, and would love to see if extend to >> Arrays as well, but not sure if it fits with future goals for the language. > > Yeah, this is something I've wanted to add for a while, along with pattern > matching for dictionaries, which together with array matching I think would > make a lot of JSON/plist wrangling much more pleasant. Since it's an additive > feature, it's taken a backseat to more pressing source- and ABI-breaking > changes we've wanted to get out of the way first. > > -Joe > _______________________________________________ > swift-evolution mailing list > [email protected] <mailto:[email protected]> > https://lists.swift.org/mailman/listinfo/swift-evolution > <https://lists.swift.org/mailman/listinfo/swift-evolution>
_______________________________________________ swift-evolution mailing list [email protected] https://lists.swift.org/mailman/listinfo/swift-evolution
