[swift-evolution] [Pitch] Remove associated type inference

Dmitri Gribenko gribozavr at gmail.com
Wed May 25 17:32:58 CDT 2016

On Wed, May 25, 2016 at 2:52 PM, David Hart <david at hartbit.com> wrote:
>> On 25 May 2016, at 23:47, Dmitri Gribenko <gribozavr at gmail.com> wrote:
>> On Wed, May 25, 2016 at 2:43 PM, David Hart via swift-evolution
>> <swift-evolution at swift.org> wrote:
>>> Impact on Existing Code
>>> This is a breaking change that will require conforming types which relied on
>>> the inference, including in the Standard Library, to explicitly declare
>>> associated types. A Fix-It could be introduced to add the typealias and
>>> leave the type to be filled in. That way, all the type inference could be
>>> removed from the compiler.
>> Please show an example -- for example, what a smallest collection type
>> will look like.
> Isn’t that the example in the Detailed Design section? What other example were you thinking of?

You are showing an iterator.  Try doing a collection, it has many more
associated types most of which are defaulted.

>>> Alternatives Considered
>>> The only alternative is to keep the inference with the known consequences on
>>> the compiler.
>> Sorry, that's not fair :)  There is a middle ground -- limited
>> inference.  For example, in Collection, we don't need Index to be
>> inferrable from every declaration that mentions it.  We can add a
>> feature to declare that the type of 'var startIndex' infers
>> 'associatedtype Index' (via an appropriate attribute).  It is true
>> that this approach would not remove global inference as such, but it
>> will make it a much easier problem I believe.
> This sounds like a more complicated solution: it does not remove global inference and complicates the language with an additional attribute only to help the compiler. I don’t see many advantages to this solution.

The advantage is that we can keep the boilerplate down, and make the
problem easier in the compiler.


(j){printf("%d\n",i);}}} /*Dmitri Gribenko <gribozavr at gmail.com>*/

More information about the swift-evolution mailing list