> On Jun 1, 2017, at 2:39 PM, Pavol Vaskovic <p...@pali.sk> wrote:
> 
> On Thu, Jun 1, 2017 at 8:52 PM, John McCall via swift-evolution 
> <swift-evolution@swift.org <mailto:swift-evolution@swift.org>> wrote:
> 
> I understand that there are developers who dislike SE-0110's impact on 
> certain kinds of functional programming, but that is a very broad complaint 
> that is unlikely to reach consensus or acceptance, especially for Swift 4. 
> 
> The impact of SE-0110 as currently implemented in Swift 4 leads to following 
> migration choice wherever you have a closure that takes tuple argument:
> * concise but obfuscate code ($0.1, ...)
> * readable but verbose code (requiring a ton of boilerplate: intermediate 
> argument, expand signature to include return type, desctructure tuple on new 
> line using let, add return clause)
> 
> Maybe I misunderstood you, but I don't think this is marginal issue affecting 
> only some "developers that dislike the impact on certain kinds of functional 
> programming". 

You're misunderstanding me.  I have explicitly said, several times, that I 
agree that the impact on tuple destructuring in closures is a serious 
regression.  There have *also* been objections to losing argument-splat 
behavior, and while that does negatively affect some functional styles, I think 
it would be a mistake to try to address that now.

John.

> 
> This is a HUGE regression to the usability of all closure with tuple 
> arguments. I'd wager that is the prevailing consensual opinion of anyone who 
> has experienced this issue in practice. 
> 
> I would go as far as to claim that current implementation of SE-0110 does not 
> conform to the Swift 4's goal of backwards source compatibility.
>  
> In contrast, I think we may be able to gain consensus on a more targeted 
> proposal that just re-admits tuple destructuring in closures, assuming we can 
> find an acceptable implementation.
> 
> From what I understand our options are quite limited because of tight 
> constraints of Swift 4's emphasis on backwards source-compatibility and 
> impending release deadline:
> 
> * effectively revert SE-0110 by always using the codepath for Swift 3 
> compatibility mode
> * implement full tuple destructuring (unexplored issues with syntax and 
> backwards compatibility)
> 
> (Note that Swift 3 didn't support full tuple destructuring - SR-4738 
> <https://bugs.swift.org/browse/SR-4738>)
> 
> --Pavol

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

Reply via email to