On Dec 31, 2015, at 6:16 PM, Ethan Diamond via swift-evolution 
<[email protected]> wrote:
> There are three pieces at play here IMHO:
> 1. How functions (global and on types) are declared and implemented
> 2. How function specifications are indicated as types
> 3. How anonymous functions are declared and implemented
> 
> Agreed, so lets flush out the rules a little more and see if we can find a 
> common language for all three, since they're interconnected. For the sake of 
> clarity, I'm going to refer to closures as blocks, since they're effectively 
> the same thing. I think we should begin with these three rules:
> 
> 1. Let's try to keep precedent for function calls, since blocks are pretty 
> much functions
> 2. A ^ signifies that we are now entering a block context with regards to 
> syntax
> 3. Just as in a lot of the rest of Swift, let's infer information we can, but 
> optionally allow it to be respecified if it makes the syntax clearer

I can’t believe that you’re seriously considering use of ^ for closure syntax, 
it is one of the most hated aspects of ObjC’s blocks. :-) :-)  FWIW, I’m the 
one to blame for the use of caret in ObjC’s block’s syntax.  In my defense, 
this was necessary to fit blocks into the C grammar - everything everyone hates 
about blocks declaration syntax is shared with C function pointer syntax.  That 
"problem to be solved” doesn’t exist in the Swift grammar, so I don’t see why 
we’d carry it over.

More generally, we are extremely unlikely to make a change to the basic 
declaration syntax of swift (e.g. func, var, etc) or closure expressions.  They 
have been carefully considered, and work well in practice.  I don’t see a 
reason to make a change here.

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

Reply via email to