On Apr 26, 2016, at 10:52 AM, Mishal Awadah via swift-evolution 
<swift-evolution@swift.org> wrote:
> Concern 1:
> I feel like we're forgetting about the functional programming syntax of 
> declaring function types like this: 
> 
> A -> B -> C 
> 
> for a function foo(a: A, b: B) -> C

This analogy doesn’t exist in Swift, languages like Haskell have auto-currying 
behavior like this, but Swift does not.

> 
> This eliminates the ambiguity of what the parameter types are, and is more 
> legible (less paren hell) than adding parens like this: 
> 
> (A,B) -> C
> 
> which for a function 
> 
> foo(a: (A, B)) -> C
> 
> would look like this after the implementation of SE-0066: 
> 
> ((A,B)) -> C
> 
> instead of 
> 
> (A,B) -> C

I’m not sure what the actual concern you’re pointing out here.  However, you 
are forgetting the argument labels.  Your foo example will have type:

(a: (A,B)) -> C

More to the point thought, this example is *exactly* why SE-0066 is the right 
thing to do.  You cannot currently write the type of “foo” as "(A,B) -> C”.  
(with or without labels), because of the grammar ambiguities that SE-0066 fixes.

That said, it is likely that I’m totally missing your point here, can you 
please restate your concern?


> Concern 2:
> 
> There's also the potential to transform a function like this
> 
> A -> B -> C
> 
> into this
> 
> B -> C
> 
> after partial application, something which might not be totally irrelevant to 
> Swift in its future. 

This isn’t affected by SE-0066 - what is your concern?  With SE-0066, the 
transformation is:

(A) -> (B) -> C
into:
(B) -> C

Please keep in mind that SE-0066 doesn’t change the type system, it just adds 
parens in a very narrow case.

> 
> 
> Here are a few contrived examples of function types showing the paren version 
> (order 66), the parens on the return type too, and the generic functional 
> programming version (right). I want to preface this with, "Remember that 
> Swift is an enjoyable experience because reading Swift is pleasant.”

0066 does not affect the return type of a function.

-Chris

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

Reply via email to