Oh, I definitely overlooked that part. Thanks for that clarification! I had 
assumed the compiler changes were only necessary for allowing circular default 
implementations while still requiring at least one requirement be implemented.

That said, it’s possible to implement something very, very similar without 
compiler changes:
https://gist.github.com/JadenGeller/7566b3b64b5597ee57e8a509f6fc4bb3#file-context-swift-L43
 
<https://gist.github.com/JadenGeller/7566b3b64b5597ee57e8a509f6fc4bb3#file-context-swift-L43>

Cheers,
Jaden Geller

> On Apr 13, 2017, at 5:58 PM, Xiaodi Wu <[email protected]> wrote:
> 
> Jaden, the proposal literally says that a compiler feature named 
> "@_implements" is necessary for the proposed design to work. You can see WIP 
> for that feature in the apple/swift repo.
> 
> 
> On Thu, Apr 13, 2017 at 19:55 Jaden Geller <[email protected] 
> <mailto:[email protected]>> wrote:
> 
>> On Apr 13, 2017, at 5:18 PM, Xiaodi Wu via swift-evolution 
>> <[email protected] <mailto:[email protected]>> wrote:
>> 
>> Actually, the fact that this behavior cannot even be achieved without 
>> currently non-existent compiler features means that it is not possible to 
>> understand what's truly going on without reading *this document*, after 
>> mastering *both* IEEE floating point *and* Swift 
>> generics/protocols/extensions/static vs. dynamic dispatch. All to use `==` 
>> correctly. Which is to say, most people will simply not even know if they 
>> happen to be using the `==` they did not intend to use.
>> 
> 
> If I understand correctly, I think you’re mistaken. The compiler already 
> selects overloads based on generic context. If `T: FloatingPoint`, then it’ll 
> choose the `==` with signature `<T: FloatingPoint> (T, T) -> Bool`. If `T: 
> Equatable`, then it’ll choose the `==` with signature `<T: Equatable> (T, T) 
> -> Bool`. No new compiler features are necessary for this specific behavior.
> 
> Cheers,
> Jaden Geller

_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to