> On Jun 7, 2017, at 11:12 PM, Stephen Celis via swift-evolution 
> <swift-evolution@swift.org> wrote:
> 
>> On Jun 7, 2017, at 10:33 PM, Xiaodi Wu via swift-evolution 
>> <swift-evolution@swift.org> wrote:
>> 
>> However, what I don’t get is why you’d have a mismatch here. Your method 
>> `first` accepts a closure, and surely the type it expects should be 
>> `((String, Conversation)) -> Bool` instead, since that is the type that the 
>> `filter` method expects in the body of your implementation?
> 
> I must continue to ask for more justification as to why it's _so_ valuable to 
> consider "(Int,Int)->()" and "((Int,Int))->()" to be different in _most_ 
> cases. Even in the contrived-described example above, the function may be 
> reusable and the engineer may pass "String" and "Conversation" objects 
> directly in some cases, and this distinction only makes things more difficult 
> and requires cumbersome workarounds.

Imagine if “(Int, Int)” was hidden behind a type-alias. You expect you’d be 
entering a single argument. But, surprise, you unintentionally activated the 
secret tuple-exploding mode and you’re actually passing in two arguments!

[I didn’t follow the original discussion, so apologies if using a type-alias 
doesn’t case tuple-explosion. Of course, that would be a different code smell….]

— 
Daryle Walker
Mac, Internet, and Video Game Junkie
darylew AT mac DOT com 

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

Reply via email to