Something about this line of reasoning seems wrong. Like, objectively fallacious as a sequence of logical steps.
Youâre not the first on these forums to espouse a view that, âUsers should never conform a type they donât control to a protocol they donât control.â
Itâs been said a lot. And every time I hear it, it always seems off. The logic doesnât hold up to scrutiny.
Letâs focus on the case at hand: conforming a standard library type to a standard library protocol.
First, note that this is pragmatically useful. The conformance is useful to the programmer (Dave) who makes it. It is also useful to the standard library maintainers. The existence of a 3rd-party conformance provides data that says, âHey, thereâs a missing conformance here.â
Second, if and when the standard library does eventually add the conformance, the programmer (Dave) is not going to say âUgh, this breaks my code.â No. Instead theyâre going to say âHallelujah! Finally! Iâve been waiting years for this! I can delete so much boilerplate! This is fantastic!â
The programmer wants the standard library to add the conformance. They are frustrated that is has not yet done so. And they are even more frustrated that the standard library actively prevents them from adding the conformance themself. It is harming their productivity.
Third, even if it does break something when the standard library adds the conformance, thatâs a breakage that was known and foreseeable. The programmer (Dave) was reasonably aware of the possibility when they made their own 3rd-party conformance.
Fourth, your particular objection to base exhibits a massive inversion of priority. It amounts to, âBecause base is especially useful right now in the absence of a certain conformance, therefore we should not add it until after that conformance is provided.â
It is completely backwards. The fact that the conformance does not exist today, and there are no concrete plans to add that conformance in the near future, is an additional reason why base should exist, on top of all other reasons.
Dave is saying, âThereâs a ravine I want to cross, but to build a bridge I need an anchor point.â
And you are saying, âThe ravine might eventually get filled in by a public-works project years from now. If that happens you wonât need a bridge, and any bridge you did build would be destroyed. So I think the reason you want an anchor point is terrible. Bad enough to taint the entire idea of installing an anchor point, regardless of what else it might be used for.â
The sequence of logical stepsâthe reasoningâis bad. Having the anchor point today would be useful. Delaying the anchor point until it becomes less useful, is actively harmful. The sum total of all utility that would have been achieved through using the anchor point (the base property) by all programmers throughout the entire duration of time until the standard library adds the conformance itself, would be lost.