<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class="">-1<div class=""><br class=""></div><div class="">I guess breaking existing code will be the show stopper for this proposal — but I generally think that compatibility is a poor rationale to stop an improvement, so my personal reasons are different:</div><div class="">The name is just wrong.</div><div class="">Just have a look at this simple example</div><div class=""><br class=""></div><div class=""><div style="margin: 0px; font-stretch: normal; line-height: normal; font-family: Menlo; color: rgb(186, 45, 162); background-color: rgb(255, 255, 255);" class=""><div style="margin: 0px; font-stretch: normal; line-height: normal;" class=""><div style="margin: 0px; font-stretch: normal; line-height: normal;" class="">extension<span style="color: rgb(0, 0, 0);" class=""> </span><span style="color: rgb(112, 61, 170);" class="">Int</span><span style="color: rgb(0, 0, 0);" class=""> {</span></div><div style="margin: 0px; font-stretch: normal; line-height: normal; color: rgb(0, 0, 0);" class=""> <span style="color: rgb(186, 45, 162);" class="">func</span> justImagineError() <span style="color: rgb(186, 45, 162);" class="">throws</span> -> <span style="color: rgb(112, 61, 170);" class="">Int</span> {</div><div style="margin: 0px; font-stretch: normal; line-height: normal;" class=""><span style="color: rgb(0, 0, 0);" class=""> </span>return<span style="color: rgb(0, 0, 0);" class=""> </span>self</div><div style="margin: 0px; font-stretch: normal; line-height: normal; color: rgb(0, 0, 0);" class=""> }</div><div style="margin: 0px; font-stretch: normal; line-height: normal; color: rgb(0, 0, 0);" class="">}</div><div style="margin: 0px; font-stretch: normal; line-height: normal; font-family: Helvetica; min-height: 14px;" class=""><br class=""></div><div style="margin: 0px; font-stretch: normal; line-height: normal; color: rgb(0, 0, 0);" class=""><span style="color: rgb(186, 45, 162);" class="">let</span> ints: [<span style="color: rgb(112, 61, 170);" class="">Int</span>?] = [<span style="color: rgb(186, 45, 162);" class="">nil</span>]</div><div style="margin: 0px; font-stretch: normal; line-height: normal; font-family: Helvetica; min-height: 14px;" class=""><br class=""></div><div style="margin: 0px; font-stretch: normal; line-height: normal; color: rgb(0, 0, 0);" class=""><span style="color: rgb(186, 45, 162);" class="">let</span> result = <span style="color: rgb(79, 129, 135);" class="">ints</span>.<span style="color: rgb(62, 30, 129);" class="">flatMap</span> {</div><div style="margin: 0px; font-stretch: normal; line-height: normal; color: rgb(49, 89, 93);" class=""><span style="color: rgb(0, 0, 0);" class=""> </span><span style="color: rgb(186, 45, 162);" class="">return</span><span style="color: rgb(0, 0, 0);" class=""> </span><span style="color: rgb(186, 45, 162);" class="">try</span><span style="color: rgb(0, 0, 0);" class="">? $0?.</span>justImagineError<span style="color: rgb(0, 0, 0);" class="">()</span></div><div style="margin: 0px; font-stretch: normal; line-height: normal; color: rgb(0, 0, 0);" class="">}</div><div style="margin: 0px; font-stretch: normal; line-height: normal; color: rgb(79, 129, 135);" class=""><span style="color: rgb(62, 30, 129);" class="">print</span><span style="color: rgb(0, 0, 0);" class="">(</span>result<span style="color: rgb(0, 0, 0);" class="">)</span></div><div class=""><span style="color: rgb(0, 0, 0);" class=""><br class=""></span></div></div></div></div><div class="">If flatMap would really filter out nil values, this should yield an empty array as result — but the actual output is <b style="font-family: Menlo;" class="">[nil]</b></div></body></html>