[swift-evolution] ternary operator ?: suggestion

Craig Cruden ccruden at novafore.com
Mon Dec 14 23:21:11 CST 2015


I would actually prefer the if statement become more functional vs flow-control which would encompass the ternary statement.

So 

let x = if (boolean) “true” else “false”

or 

let x =
	if (boolean)
		“true”
	else 
		“false”

or 

let n = 
	if (boolean) {
		print(“test”)
		“true”
	}
	else 
		false


If becomes just another function as opposed to pure flow-control.

A similar approach to switch would also be nice.  

Before Swift was really just a vehicle for UI applications, but now it is aiming to be more of a general language for server as well (available on Linux).  UI’s generally by their nature are object-oriented, and thus extending it’s functional side was not a priority….. but moving forward it would be nice if it incorporated more of Scala’s functional paradigm into the language (where it does not overtly affect performance) so that developers can program functionally or object-oriented - whatever is the best fit.  

-Craig

> On 2015-12-15, at 12:01:46, Paul Ossenbruggen via swift-evolution <swift-evolution at swift.org> wrote:
> 
> Hi Chris,
> 
> Yes definitely, after splitting the proposal up, and some of the feedback I got on the first draft, I became less enamored of the idea and I understand the objections, and we need answer the question "is this really better?”.  If others have strong reasons why they really don’t like ternary or reasons they may have heard, please let me know and I would be happy to add them to the proposal. 
> 
> - Paul 
> 
>> On Dec 14, 2015, at 10:57 AM, Chris Lattner <clattner at apple.com <mailto:clattner at apple.com>> wrote:
>> 
>> 
>>> On Dec 14, 2015, at 12:19 AM, Paul Ossenbruggen via swift-evolution <swift-evolution at swift.org <mailto:swift-evolution at swift.org>> wrote:
>>> 
>>> Once again, thank you for all the feedback, if I sound in anyway grumpy in responding to any email, it has a bit more to do with my cold than the suggestions.
>>> 
>>> I have split the original proposal into two proposals and incorporated a bunch of feedback. Splitting it up has been extremely good, not only does it improve readability, I am actually finding I could take or leave the ternary replacement idea. But the proposal will be there if enough everyone thinks it is a good idea. We could put it to a vote to see if there is enough interest and I would be happy to take it further if there is. I suspect this thread would not exist at all if there was no interest in it. However, I am finding I am far more interested in getting switch expressions. 
>>> 
>>> Ternary Replacement
>>> https://github.com/possen/swift-evolution/blob/master/0021.md <https://github.com/possen/swift-evolution/blob/master/0021.md>
>> Quick comment.  The proposal states:
>> 
>> 
>> Is it really better? Why not just keep ternary expressions?
>> This is a valid question, there is an advantage in compactness to ternary expressions. I however frequently hear people saying ternary should be avoided because they are hard to read or they hate them. There seems to many who either stronly dislike it or don't care.
>> 
>> 
>> However, it doesn’t actually show that it is solving the objections people have to the ternary operator.  It is true that some people find the ?: syntax weird, but an equal number of people say that the problem is that you’re putting complex conditional logic inline into the middle of an expression - this proposal actually makes that objection worse.  There are also other objections to ?:, and until you enumerate them, it is hard to see whether this proposal is making things better or worse.
>> 
>> -Chris
> 
> 
> _______________________________________________
> swift-evolution mailing list
> swift-evolution at swift.org
> https://lists.swift.org/mailman/listinfo/swift-evolution

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20151215/647bc056/attachment.html>


More information about the swift-evolution mailing list