Right; clearly, the difference between the proposed @_implements design and yours will be subtle (but, when it strikes, a totally different function is invoked) and it will be difficult for even advanced Swift users to understand. On Thu, Apr 13, 2017 at 20:29 Jaden Geller <[email protected]> wrote:
> 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 > > 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]> wrote: > >> >> On Apr 13, 2017, at 5:18 PM, Xiaodi Wu via swift-evolution < >> [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
