<html><head><meta http-equiv="Content-Type" content="text/html charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div class="">I was thinking about this a bit, and was thinking that maybe we would not need a new keyword at all but just use `map` with pattern matching `case` clauses. It would mean adding `map` to individual values — or anything that we might want to use as input for matching. </div><div class=""><br class=""></div><div class="">Reference scala (section 8.5) pattern matching: <a href="http://www.scala-lang.org/docu/files/ScalaReference.pdf" class="">http://www.scala-lang.org/docu/files/ScalaReference.pdf</a></div><div class=""><br class=""></div><div class="">In scala inside `map` and `filter` (unfortunately not on things like `reduceLeft` or `foldLeft` you can specify pattern matching anonymous functions as such:</div><div class=""><br class=""></div><div class=""><div class=""><div class="">val num = List(1, 5, 7)</div><div class=""><br class=""></div><div class="">num.map {</div><div class=""> case x if x < 5 => x + 1</div><div class=""> case x => x - 1</div><div class="">}</div></div><div class=""><br class=""></div><div class="">output: List(2, 4, 6)</div><div class=""><br class=""></div><div class="">So if the pattern matching was added (I don’t believe Swift currently allows case classes in maps - but then I am rather junior in the language) Swift would not need a `match expression` it would simply be part of map and become something like:</div><div class=""><br class=""></div><div class=""><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;"><font color="#bb2ca2" class="">let commission = </font><span class="" style="color: rgb(79, 129, 135);">trade</span><span class="">.map {</span></div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;"><span class="" style="color: rgb(187, 44, 162);"><span class="Apple-tab-span" style="white-space:pre">        </span>case</span> .Buy(<span class="" style="color: rgb(187, 44, 162);">let</span> quantity, <span class="" style="color: rgb(187, 44, 162);">let</span> price) <span class="" style="color: rgb(187, 44, 162);">where</span> <span class="" style="color: rgb(112, 61, 170);">Double</span>(quantity) * price > <span class="" style="color: rgb(39, 42, 216);">10000 in</span></div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;"> <span class="Apple-tab-span" style="white-space:pre">                </span><span class="" style="color: rgb(112, 61, 170);">Double</span>(quantity) * price * <span class="" style="color: rgb(79, 129, 135);">vipCommissionRate</span> / <span class="" style="color: rgb(39, 42, 216);">100</span></div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;"><span class="" style="color: rgb(187, 44, 162);"><span class="Apple-tab-span" style="white-space:pre">        </span>case</span> .Buy(<span class="" style="color: rgb(187, 44, 162);">let</span> quantity, <span class="" style="color: rgb(187, 44, 162);">let</span> price):</div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;"> <span class="Apple-tab-span" style="white-space:pre">                </span><span class="" style="color: rgb(112, 61, 170);">Double</span>(quantity) * price * <span class="" style="color: rgb(79, 129, 135);">commissionRate</span> / <span class="" style="color: rgb(39, 42, 216);">100</span></div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;"><span class="" style="color: rgb(187, 44, 162);"><span class="Apple-tab-span" style="white-space:pre">        </span>case</span> .Sell(<span class="" style="color: rgb(187, 44, 162);">let</span> quantity, <span class="" style="color: rgb(187, 44, 162);">let</span> price) <span class="" style="color: rgb(187, 44, 162);">where</span> <span class="" style="color: rgb(112, 61, 170);">Double</span>(quantity) * price > <span class="" style="color: rgb(39, 42, 216);">10000</span>:</div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;"> <span class="Apple-tab-span" style="white-space:pre">                </span><span class="" style="color: rgb(112, 61, 170);">Double</span>(quantity) * price * <span class="" style="color: rgb(79, 129, 135);">vipCommissionRate</span> / <span class="" style="color: rgb(39, 42, 216);">100</span></div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;"><span class="" style="color: rgb(187, 44, 162);"><span class="Apple-tab-span" style="white-space:pre">        </span>case</span> .Sell(<span class="" style="color: rgb(187, 44, 162);">let</span> quantity, <span class="" style="color: rgb(187, 44, 162);">let</span> price):</div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;"> <span class="Apple-tab-span" style="white-space:pre">                </span><span class="" style="color: rgb(112, 61, 170);">Double</span>(quantity) * price * <span class="" style="color: rgb(79, 129, 135);">commissionRate</span> / <span class="" style="color: rgb(39, 42, 216);">100</span></div></div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;"><span class="" style="color: rgb(39, 42, 216);">}</span></div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;"><span class="" style="color: rgb(39, 42, 216);"><br class=""></span></div><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;"><span class="" style="color: rgb(39, 42, 216);"><br class=""></span></div><div class=""><span class="" style="color: rgb(39, 42, 216);"><br class=""></span></div><div class=""><br class=""></div></div><div><blockquote type="cite" class=""><div class=""><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class=""><div class=""><br class=""></div><div class="">But if we go with brackets then I would recommend something like this: </div><div class=""><br class=""></div><div class=""><span style="color: rgb(187, 44, 162); font-family: Menlo; font-size: 11px;" class="">let </span><span style="font-family: Menlo; font-size: 11px;" class="">commission</span><span style="color: rgb(187, 44, 162); font-family: Menlo; font-size: 11px;" class=""> =</span><span class="" style="color: rgb(187, 44, 162); font-family: Menlo; font-size: 11px;"> match (</span><span style="color: rgb(79, 129, 135); font-family: Menlo; font-size: 11px;" class="">trade) </span><span style="font-family: Menlo; font-size: 11px;" class=""><font color="#bb2ca2" class="">{</font></span></div><blockquote style="margin: 0px 0px 0px 40px; border: none; padding: 0px;" class=""><div class=""><span class="" style="font-family: Menlo; font-size: 11px; color: rgb(187, 44, 162);">case</span><span style="font-family: Menlo; font-size: 11px;" class=""> </span><span style="font-family: Menlo; font-size: 11px;" class="">.Buy(</span><span class="" style="font-family: Menlo; font-size: 11px; color: rgb(187, 44, 162);">let</span><span style="font-family: Menlo; font-size: 11px;" class=""> </span><span style="font-family: Menlo; font-size: 11px;" class="">quantity,</span><span style="font-family: Menlo; font-size: 11px;" class=""> </span><span class="" style="font-family: Menlo; font-size: 11px; color: rgb(187, 44, 162);">let</span><span style="font-family: Menlo; font-size: 11px;" class=""> </span><span style="font-family: Menlo; font-size: 11px;" class="">price)</span><span style="font-family: Menlo; font-size: 11px;" class=""> </span><span class="" style="font-family: Menlo; font-size: 11px; color: rgb(187, 44, 162);">where</span><span style="font-family: Menlo; font-size: 11px;" class=""> </span><span class="" style="font-family: Menlo; font-size: 11px; color: rgb(112, 61, 170);">Double</span><span style="font-family: Menlo; font-size: 11px;" class="">(quantity) * price ></span><span style="font-family: Menlo; font-size: 11px;" class=""> </span><span class="" style="font-family: Menlo; font-size: 11px; color: rgb(39, 42, 216);">10000</span><span style="font-family: Menlo; font-size: 11px;" class="">:</span></div><div class=""><span style="font-family: Menlo; font-size: 11px;" class=""> </span><span style="font-family: Menlo; font-size: 11px;" class=""> </span><span class="" style="font-family: Menlo; font-size: 11px; color: rgb(112, 61, 170);">Double</span><span style="font-family: Menlo; font-size: 11px;" class="">(quantity) * price *</span><span style="font-family: Menlo; font-size: 11px;" class=""> </span><span class="" style="font-family: Menlo; font-size: 11px; color: rgb(79, 129, 135);">vipCommissionRate</span><span style="font-family: Menlo; font-size: 11px;" class=""> </span><span style="font-family: Menlo; font-size: 11px;" class="">/</span><span style="font-family: Menlo; font-size: 11px;" class=""> </span><span class="" style="font-family: Menlo; font-size: 11px; color: rgb(39, 42, 216);">100</span></div><div class=""><span class="" style="font-family: Menlo; font-size: 11px; color: rgb(187, 44, 162);">case</span><span style="font-family: Menlo; font-size: 11px;" class=""> </span><span style="font-family: Menlo; font-size: 11px;" class="">.Buy(</span><span class="" style="font-family: Menlo; font-size: 11px; color: rgb(187, 44, 162);">let</span><span style="font-family: Menlo; font-size: 11px;" class=""> </span><span style="font-family: Menlo; font-size: 11px;" class="">quantity,</span><span style="font-family: Menlo; font-size: 11px;" class=""> </span><span class="" style="font-family: Menlo; font-size: 11px; color: rgb(187, 44, 162);">let</span><span style="font-family: Menlo; font-size: 11px;" class=""> </span><span style="font-family: Menlo; font-size: 11px;" class="">price):</span></div><div class=""><span style="font-family: Menlo; font-size: 11px;" class=""> </span><span style="font-family: Menlo; font-size: 11px;" class=""> </span><span class="" style="font-family: Menlo; font-size: 11px; color: rgb(112, 61, 170);">Double</span><span style="font-family: Menlo; font-size: 11px;" class="">(quantity) * price *</span><span style="font-family: Menlo; font-size: 11px;" class=""> </span><span class="" style="font-family: Menlo; font-size: 11px; color: rgb(79, 129, 135);">commissionRate</span><span style="font-family: Menlo; font-size: 11px;" class=""> </span><span style="font-family: Menlo; font-size: 11px;" class="">/</span><span style="font-family: Menlo; font-size: 11px;" class=""> </span><span class="" style="font-family: Menlo; font-size: 11px; color: rgb(39, 42, 216);">100</span></div><div class=""><span class="" style="font-family: Menlo; font-size: 11px; color: rgb(187, 44, 162);">case</span><span style="font-family: Menlo; font-size: 11px;" class=""> </span><span style="font-family: Menlo; font-size: 11px;" class="">.Sell(</span><span class="" style="font-family: Menlo; font-size: 11px; color: rgb(187, 44, 162);">let</span><span style="font-family: Menlo; font-size: 11px;" class=""> </span><span style="font-family: Menlo; font-size: 11px;" class="">quantity,</span><span style="font-family: Menlo; font-size: 11px;" class=""> </span><span class="" style="font-family: Menlo; font-size: 11px; color: rgb(187, 44, 162);">let</span><span style="font-family: Menlo; font-size: 11px;" class=""> </span><span style="font-family: Menlo; font-size: 11px;" class="">price)</span><span style="font-family: Menlo; font-size: 11px;" class=""> </span><span class="" style="font-family: Menlo; font-size: 11px; color: rgb(187, 44, 162);">where</span><span style="font-family: Menlo; font-size: 11px;" class=""> </span><span class="" style="font-family: Menlo; font-size: 11px; color: rgb(112, 61, 170);">Double</span><span style="font-family: Menlo; font-size: 11px;" class="">(quantity) * price ></span><span style="font-family: Menlo; font-size: 11px;" class=""> </span><span class="" style="font-family: Menlo; font-size: 11px; color: rgb(39, 42, 216);">10000</span><span style="font-family: Menlo; font-size: 11px;" class="">:</span></div><div class=""><span style="font-family: Menlo; font-size: 11px;" class=""> </span><span style="font-family: Menlo; font-size: 11px;" class=""> </span><span class="" style="font-family: Menlo; font-size: 11px; color: rgb(112, 61, 170);">Double</span><span style="font-family: Menlo; font-size: 11px;" class="">(quantity) * price *</span><span style="font-family: Menlo; font-size: 11px;" class=""> </span><span class="" style="font-family: Menlo; font-size: 11px; color: rgb(79, 129, 135);">vipCommissionRate</span><span style="font-family: Menlo; font-size: 11px;" class=""> </span><span style="font-family: Menlo; font-size: 11px;" class="">/</span><span style="font-family: Menlo; font-size: 11px;" class=""> </span><span class="" style="font-family: Menlo; font-size: 11px; color: rgb(39, 42, 216);">100</span></div><div class=""><span class="" style="font-family: Menlo; font-size: 11px; color: rgb(187, 44, 162);">case</span><span style="font-family: Menlo; font-size: 11px;" class=""> </span><span style="font-family: Menlo; font-size: 11px;" class="">.Sell(</span><span class="" style="font-family: Menlo; font-size: 11px; color: rgb(187, 44, 162);">let</span><span style="font-family: Menlo; font-size: 11px;" class=""> </span><span style="font-family: Menlo; font-size: 11px;" class="">quantity,</span><span style="font-family: Menlo; font-size: 11px;" class=""> </span><span class="" style="font-family: Menlo; font-size: 11px; color: rgb(187, 44, 162);">let</span><span style="font-family: Menlo; font-size: 11px;" class=""> </span><span style="font-family: Menlo; font-size: 11px;" class="">price):</span></div><div class=""><div class="" style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;"><div class=""><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;"> <span class="" style="color: rgb(112, 61, 170);">Double</span>(quantity) * price * <span class="" style="color: rgb(79, 129, 135);">commissionRate</span> / <span class="" style="color: rgb(39, 42, 216);">100</span></div></div></div></div></blockquote><div class=""><div class="" style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;"><div class=""><div class="" style="margin: 0px; font-size: 11px; line-height: normal; font-family: Menlo;"><font color="#272ad8" class="">}</font></div></div></div></div></div></div></blockquote></div><br class=""></body></html>