Sent from my iPhone

> On May 10, 2016, at 8:33 PM, Chris Lattner via swift-evolution 
> <swift-evolution@swift.org> wrote:
> 
>> On May 10, 2016, at 3:02 AM, Sam Dods via swift-evolution 
>> <swift-evolution@swift.org> wrote:
>> I propose that function argument types could be omitted in the same way as 
>> variable and property argument types are omitted when they are set at point 
>> of definition.
>> 
>> At present the type of properties and variables can be inferred as below:
>> 
>> class EvolutionManager {
>> let proposalManager = ProposalManager()           // type is inferred
>> 
>> func proposeTopic(topic: String) {
>>   let evolution = Evolution(topic: topic)         // type is inferred
>>   proposalManager.proposeEvolution(evolution)
>> }
>> }
>> 
>> However, function arguments cannot be inferred, as below:
>> 
>> class EvolutionManager {
>> func proposeEvolution(evolution: Evolution, proposalManager = 
>> ProposalManager()) {       // compiler error, cannot infer type
> 
> We have a pretty strict rule here: types are allowed to be inferred in 
> implementations, but not interfaces.  This is important for efficient 
> compilation, encourages people to think about their API interfaces, and 
> somewhat reduces the damage when they don’t.

We broke this rule when we started allowing properties at type and module scope 
to have inferred types. I was moderately opposed to it at the time, but we have 
it, we're going to keep it, and this suggestion for inferring parameter types 
from default arguments seems to fit in the same category. 

That said, I have implementation concerns: we don't want the expression type 
checker to be involved when figuring out the type of a generic function, so we 
would need to define this in a way that doesn't affect the computation of 
generic signatures for a function. Probably, such types just aren't involved in 
inferring generic constraints. 

  - Doug

> 
> _______________________________________________
> swift-evolution mailing list
> swift-evolution@swift.org
> https://lists.swift.org/mailman/listinfo/swift-evolution
_______________________________________________
swift-evolution mailing list
swift-evolution@swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to