I guess the question is, "Do we want this to be the process we expect of
and explain to newcomers?"

On Sun, Sep 17, 2017 at 7:32 PM, Michel Fortin via swift-evolution <
[email protected]> wrote:

> Le 17 sept. 2017 à 18:00, Félix Cloutier via swift-evolution <
> [email protected]> a écrit :
>
> I found that for Sequence, but Sequence is far from the only protocol with
> default implementations, and not all of them have maintainers willing to
> write and update documentation to the degree that Apple will.
>
>
> How I do it is like this:
>
> 1. Make a dummy struct (or class) that claim conformance to a protocol:
>
> struct Z: Collection {
> }
>
> 2. Compiling, then deciphering the errors tells me that type deduction
> doesn't work for associated type `Index` because there is no subscript. So
> I add one:
>
> struct Z: Collection {
> subscript (index: Int) -> Int {
> get { return index }
> }
> }
>
> 3. Compiling again, I now get a suggestion (fixit) telling me to add
> `startIndex` and `endIndex`. I add the suggested code:
>
> struct Z: Collection {
> var startIndex: Int
>
> var endIndex: Int
>
> subscript (index: Int) -> Int {
> get { return index }
> }
> }
>
> 4. Compiling again, I get another suggestion (fixit) telling me I'm
> missing `index(after:)`. I add it and write an implementation inside the
> braces. And here I am:
>
> struct Z: Collection {
> func index(after i: Int) -> Int {
> return i + 1
> }
>
> var startIndex: Int
>
> var endIndex: Int
>
> subscript (index: Int) -> Int {
> get { return index }
> }
> }
>
> 5. And now it compiles. Hurray!
>
> I made a collection type and did not have to read any documentation at
> all. The hardest step is the first one where you have to figure out how to
> make deduction work for the associated types based on the error messages.
>
>
> --
> Michel Fortin
> https://michelf.ca
>
>
>
> --
> Michel Fortin
> https://michelf.ca
>
>
> _______________________________________________
> swift-evolution mailing list
> [email protected]
> https://lists.swift.org/mailman/listinfo/swift-evolution
>
>
_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to