Just to add my point of view as language user. I don’t know so much about 
compilers and neither have many familiarity with language grammars. I like to  
learn, and this list helps.

I think clousures are strangely written and break some coherence. I agree with 
Alexander on that.
But I don’t like the proposed solution.

In the other side, I think trailing closures are a really a great feature, I 
like a lot.
But I feel it’s a bit confusing in some way, as Alexander pointed. As if it was 
the body definition of the called function.

To throw an idea, the with keyword:


with (  parameters ) -> return_type {
    statements
}


sorted = names.sort( with(s1: String, s2: String) -> Bool {
    return s1 > s2
})


sorted = names.sort( with(s1, s2){  return s1 > s2 } )


reversed = names.sort( with(s1, s2){ s1 > s2 } )


reversed = names.sort( { $0 > $1 } )   
OR? reversed = names.sort( with{ $0 > $1 } )


reversed = names.sort(>)
OR? reversed = names.sort(with >)


reversed = names.sort()  with { $0 > $1 }   // I think clarifies it is an input 
to exeute not a definition


reversed = names.sort with { $0 > $1 }  // I think clarifies it is an input to 
exeute not a definition


Thanks!


Daniel


Daniel Valls Estella · tel. 659.910.830 · [email protected]

> El 22 des 2015, a les 7:57, Thorsten Seitz via swift-evolution 
> <[email protected]> va escriure:
> 
> Well, I'm actually happy with the current closure syntax as it allows very 
> succinct simple cases and trailing closures as Chris has already pointed out.
> 
>> Am 21.12.2015 um 23:44 schrieb Alexander Regueiro via swift-evolution 
>> <[email protected]>:
>> 
>> Okay, I assume you are aware this essentially the same syntax as used in 
>> languages like C# and Python, yes? I’m not sure there are any problems in 
>> those languages with it.
>> 
>>> If you dig through (very early) history you’ll see that we had this.  There 
>>> are a couple of problems with it:
>>> 
>>> 1) It punishes simple cases like “X.sort { $1 < $0 }”, along with lots of 
>>> simple map and filter closures.
>> 
>> Not really. The above example would just be `X.sort func { $1 < $0 }” or 
>> "X.sort \ { $1 < $0 }` in my proposed syntax. Also, it would be nice to have 
>> all operators implicitly
> 
> Having "func" or the backslash crammed in there is really ugly and unreadable 
> IMHO.
> 
> And in Haskell you don't have braces for the body to begin with and you would 
> have to enclose the closure in parenthesis if it is part of an expression 
> like your examples so in effect it would look quite similar, i.e. having the 
> parameters within the parenthesis (sure, the semantics are different, but I 
> made argument just to demonstrate that what looks good in one syntactic 
> environment might not look good in another).
> 
>>> 2) It reads really weird in trailing closure cases.
>> 
>> Honestly, I strongly dislike trailing closures. I don’t think they add much, 
>> and moreover they use a confusing syntax that make the whole function call 
>> look superficially like a function declaration (or indeed the whole thing 
>> being a closure).
> 
> Trailing closures are a great feature IMHO because they make the code much 
> more readable by allowing constructs to look similar to control flow 
> statements.
> This allows creating very readable DSLs.
> 
> 
>>> Lets step back: What problems are you trying to solve with the current 
>>> closure syntax?
>> 
>> Readability, mainly. I think this is a big improvement. 
> 
> Well, I think it's the opposite for the simple cases and for trailing 
> closures. 
> 
> 
>> Then there’s similarity with other languages, which is minor, but nice. I 
>> don’t know any language that uses a syntax like the current one of Swift.
> 
> Smalltalk and Ruby immediately come to mind and I'm sure there are others.
> 
> Scala has a trailing closure syntax which is similar to Swift's syntax as 
> well.
> 
> -Thorsten 
> _______________________________________________
> swift-evolution mailing list
> [email protected]
> https://lists.swift.org/mailman/listinfo/swift-evolution

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

Reply via email to