[swift-evolution] Will these two features be included in Swift 3?

Krzysztof Siejkowski krzysztof at siejkowski.net
Mon Dec 7 06:56:47 CST 2015


Oh, it could be so, I’m just not aware of it. I’ve tried Swift version 2.2-dev (LLVM 46be9ff861, Clang 4deb154edc, Swift 778f82939c) with

extension Array where Element == Double { 
     func foo() -> String { 
         return "hello doubles!" 
     } 
}

and got

repl.swift:1:31: error: same-type requirement makes generic parameter 'Element' non-generic
extension Array where Element == Double {
                              ^

Could you please point to docs / example / reference?

All the best,
Krzysztof


On 7 December 2015 at 13:34:51, Davide De Franceschi via swift-evolution (swift-evolution at swift.org) wrote:

I thought constraining an extension to a single type (#1) was already in 2.2?
I've seen it in a SPM example and also someone confirmed to me that it compiled

It went like
extension Array where Element == Double { // add stuff }

On 7 Dec 2015, at 12:14, Krzysztof Siejkowski via swift-evolution <swift-evolution at swift.org> wrote:

Concerning extension constraining, it’s already doable with:

```
protocol DoubleProtocol {}

extension Double : DoubleProtocol {}

extension Array where Element : DoubleProtocol {
    func onlyForDoubles() -> String {
            return "hello doubles!"
    }
}

[1.2].onlyForDoubles() // „hello doubles!”
["a"].onlyForDoubles() // error: type of expression is ambiguous without more context
```

However, I personally like the idea of making a syntactic sugar for that case.

All the best,
Krzysztof


On 7 December 2015 at 13:01:11, Krzysztof Siejkowski (krzysztof at siejkowski.net) wrote:

Concerning generic typealiases, the topic is already being discussed in „Generic `typealias`s” thread: https://lists.swift.org/pipermail/swift-evolution/2015-December/000132.html. The core Swift team approves:

> Yes, this is definitely something that I (at least) would
like to see. Patches welcome :-)
> Chris (Lattner)

All the best,
Krzysztof

On 7 December 2015 at 12:41:05, Tuur Anton via swift-evolution (swift-evolution at swift.org) wrote:

Can you please add these features in Swift 3?

1. The ability to do this:
extension Array<Double> {
    //extend arrays of doubles
}

2. Generic typealiases:
struct Foo<T,V> {
    let t: T
    let v: V
}
typealias IntFoo<V> = Foo<Int,V> //Error in Swift 2.1
 _______________________________________________
swift-evolution mailing list
swift-evolution at swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution
 _______________________________________________
swift-evolution mailing list
swift-evolution at swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution

 _______________________________________________
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/20151207/f5f15c55/attachment.html>


More information about the swift-evolution mailing list