[swift-evolution] ternary operator ?: suggestion

Craig Cruden ccruden at novafore.com
Fri Jan 8 03:22:49 CST 2016


Conceivably anywhere you accept a function - you could accept a set of functions based on pattern matching.


> On 2016-01-08, at 15:53:09, Craig Cruden <ccruden at novafore.com> wrote:
> 
> There is no reason why it could not be called that…. but…. it would be much more restrictive (then of course you would have switchFilter, switchReduce, switchFold etc.
> 
> The idea is that instead of having just a map which takes only a single function, in now takes a set of functions that are applicable based on pattern matching conditions (the entire set covers all cases).  
> 
> In the case of reduce, I could take a list of types which apply different calculations depending on type which sum together to produce a single value.  
> 
> Of you could just have a single case that covers all cases but allows you to decompose a type/value into something more friendly to work with.
> 
> i.e. key/value ….  n.map { case (k, v) in …. }
> 
> 
>> On 2016-01-08, at 15:35:30, Jo Albright <me at jo2.co <mailto:me at jo2.co>> wrote:
>> 
>>> On Jan 8, 2016, at 2:36 AM, Craig Cruden via swift-evolution <swift-evolution at swift.org <mailto:swift-evolution at swift.org>> wrote:
>>> 
>>>>> let commission = trade.map {
>>>>> 	case .Buy(let quantity, let price) where Double(quantity) * price > 10000 in
>>>>>     		Double(quantity) * price * vipCommissionRate / 100
>>>>> 	case .Buy(let quantity, let price) in
>>>>>     		Double(quantity) * price * commissionRate / 100
>>>>> 	case .Sell(let quantity, let price) where Double(quantity) * price > 10000 in
>>>>>     		Double(quantity) * price * vipCommissionRate / 100
>>>>> 	case .Sell(let quantity, let price) in
>>>>>     		Double(quantity) * price * commissionRate / 100
>>>>> }
>> 
>> Is there any reason it couldn’t be “switchMap” instead of “map”? Would follow the design of “flatMap” naming. It would also help explain what is happening by mapping based on a switch statement.
>> 
>> let commission = trade.switchMap {
>> 
>>     case .Buy(let quantity, let price) where Double(quantity) * price > 10000 in
>>     		Double(quantity) * price * vipCommissionRate / 100
>>     case .Buy(let quantity, let price) in
>>     		Double(quantity) * price * commissionRate / 100
>>     case .Sell(let quantity, let price) where Double(quantity) * price > 10000 in
>>     		Double(quantity) * price * vipCommissionRate / 100
>>     case .Sell(let quantity, let price) in
>>     		Double(quantity) * price * commissionRate / 100
>> 
>> }
>> 
>> 
>>  Nerd . Designer . Developer
>> Jo Albright
>> 
>> 
> 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20160108/1fee2c65/attachment.html>


More information about the swift-evolution mailing list