[swift-evolution] [pitch] Eliminate the "T1 -> T2" syntax, require "(T1) -> T2"

Vladimir.S svabox at gmail.com
Sun Apr 24 01:57:21 CDT 2016

 >.. To me, it feel like extra syntax where the -> is already making it 
very clear that we're dealing with a function...

Can't agree with you.

I don't think it's "very clear" where the function and where is result type 

Int -> String -> Void -> Float

in compare to this:

(Int) -> (String) -> (Void) -> Float

Int/String/Void - are parameters, not result type, as first result type is
(String) -> (Void) -> Float
(Void) -> Float

Also, as described in proposal, if we can omit parenthesis then we have a 
question if

(Int, Int) -> Void

is a tuple->Void or func with 2 arguments? as we also can have

((Int,Int)) -> Void which is tuple -> Void

Please look at this code :

func foo(_ : (x: Int, y: Int)) -> Int {
     return 1

typealias FooType1 = (Int,Int) -> Int  // so, what does this mean?? tuple 
to Int or 2 params to Int ?
typealias FooType2 = (((Int,Int))) -> Int

let bar : FooType1 = foo  // ? will bar accept just tuple or just two params?
let bar2 : FooType2 = foo  // ? the same question

let z = (1,2)

//foo(1,2) //  ERROR : extra argument in call

bar(z)  // no problems
bar(1, 2)  // no problems

// but
//bar2(1,2) // ERROR: extra argument in call

Were you confused by the FooType1 declaration?

On 24.04.2016 9:18, Chris Eidhof via swift-evolution wrote:
> (Sorry to be hijacking a different subthread, but I only just subscribed
> again to the mailing list)
> I understand why the proposal has its benefits. Yet, if we look at the
> SE-0009 rationale, we could apply much of that as an argument against this
> proposal, e.g. "anything that is widely repeated becomes invisible.". To
> me, it feel like extra syntax where the -> is already making it very clear
> that we're dealing with a function. I can understand why people would want
> to enforce parenthesised types in their code bases, but to me, it feels
> like clutter. I don't have any other strong rationales, adding the
> parentheses feels superfluous to me, but I'm sure that I can live with it, too.
> --
> Chris Eidhof
> _______________________________________________
> swift-evolution mailing list
> swift-evolution at swift.org
> https://lists.swift.org/mailman/listinfo/swift-evolution

More information about the swift-evolution mailing list