We currently accept function type syntax without parentheses, like:

  Int -> Float
  String -> ()

etc.  The original rationale aligned with the fact that we wanted to treat all 
functions as taking a single parameter (which was often of tuple type) and 
producing a tuple value (which was sometimes a tuple, in the case of void and 
multiple return values).  However, we’ve long since moved on from that early 
design point: there are a number of things that you can only do in a parameter 
list now (varargs, default args, etc), implicit tuple splat has been removed, 
and  the compiler has long ago stopped modeling function parameters this way.  
Beyond that, it eliminates one potential style war.

Given all this, I think it makes sense to go for syntactic uniformity between 
parameter list and function types, and just require parenthesis on the argument 
list.  The types above can be trivially written as:

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

Thoughts?

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

Reply via email to