> On Jun 6, 2017, at 8:19 PM, Mark Lacey <[email protected]> wrote:
> 
> Thanks for reminding me. It’s good to call out this case specifically. The 
> underlying reason that this is disallowed for Swift 4 is the same as the 
> underlying reason that a closure immediately passed as an argument (with with 
> mismatching function type) is disallowed for Swift 4 (i.e. the “tuple 
> destructuring” case). It might be possible to relax restrictions to allow one 
> of these without allowing the other.
> 
> Having said that, I find it surprising that your tupleUp function works as it 
> is implicitly converting the function type in a way that I would expect 
> SE-0110 to disallow. My expectation is that it would need to be written like 
> this:
> 
> func tupleUp<A, B, C>(_ f: @escaping (A, B) -> C) -> ((A, B)) -> C {
>  return { f($0.0, $0.1) }
> }

Ah yes. I was distracted while writing that reply and didn't finish the 
implementation. That looks right, thanks!

I definitely understand the ambiguity issue but there was something nice about 
being able to think of arguments as tuples. I just wish the disambiguation 
could have operated in the opposite direction.

Stephen
_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to