<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=""><font face="Menlo" class="">mapSome</font> is easy to misunderstand; the naïve reading suggests that only <i class="">some</i> of the source elements will be mapped, and doesn’t specify which ones. Even if the reader correctly intuits that it refers to <font face="Menlo" class="">Optional.some</font>, they may incorrectly believe that it only maps the non-nil elements in the source sequence. I don’t think this is the right solution.<div class=""><br class=""></div><div class=""><font face="Menlo" class="">mapAndUnwrap</font>&nbsp;is accurate to the behavior, but gives an ambiguous impression of what will happen to the nil values. I would worry that returning nil would cause a crash due to a force-unwrap. I don’t <i class="">want</i>&nbsp;the nil values unwrapped; I want them dropped from the result entirely, so calling it “unwrap” feels scary.</div><div class=""><br class=""></div><div class="">I really think we need something that mentions that the purpose of using this operation is to drop empty values.</div><div class=""><br class=""></div><div class="">-BJ</div><div class=""><div><br class=""><blockquote type="cite" class=""><div class="">On Nov 16, 2017, at 8:40 AM, Shawn Erickson via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org" class="">swift-evolution@swift.org</a>&gt; wrote:</div><br class="Apple-interchange-newline"><div class=""><div class=""><div dir="auto" class="">I so far am most in favor of mapSome out of the names I have seen followed by mapAndUnwrap (however the later is growing on me).</div><br class=""><br class=""><div dir="auto" class="">To me the most  important thing is when reading code that it is quick to understand generally what is going on followed by discoverability of a new comer. I think both of these are fairly clear on a quick read while a lot of the others are heavily overloaded terms. I also they sufficiently discoverable / learnable ... also mor so then some of the other overload terms.</div><div dir="auto" class=""><br class=""></div><div dir="auto" class="">-Shawn</div></div><div dir="auto" class=""><br class=""></div><div dir="auto" class=""><br class=""></div><div class=""><div class="gmail_quote"><div class="">On Wed, Nov 15, 2017 at 10:07 PM Gwendal Roué via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org" target="_blank" class="">swift-evolution@swift.org</a>&gt; wrote:<br class=""></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word" class=""><div class=""><blockquote type="cite" class=""><div class="">Le 16 nov. 2017 à 06:29, Matt Gallagher via swift-evolution &lt;<a href="mailto:swift-evolution@swift.org" target="_blank" class="">swift-evolution@swift.org</a>&gt; a écrit :</div><br class="m_-4937419062975721988m_8106979024756175856Apple-interchange-newline"><div class=""><div class="">My opinion is that filterMap is the right choice of name.<br class=""><br class="">I'm completely biased, given that I already have a Swift library that uses filterMap, in exactly this context, for a Reactive Programming library:<br class=""><br class=""><span class="m_-4937419062975721988m_8106979024756175856Apple-tab-span" style="white-space:pre-wrap">        </span><a href="https://github.com/mattgallagher/CwlSignal/blob/22f1d47895896d7b55bc59a4ee5394071f3c84cf/Sources/CwlSignal/CwlSignalReactive.swift#L453?ts=3" target="_blank" class="">https://github.com/mattgallagher/CwlSignal/blob/22f1d47895896d7b55bc59a4ee5394071f3c84cf/Sources/CwlSignal/CwlSignalReactive.swift#L453?ts=3</a><br class=""></div></div></blockquote></div></div><div style="word-wrap:break-word" class=""><div class=""><blockquote type="cite" class=""></blockquote><div class=""><br class=""></div><div class="">Another popular Reactive Programming Library uses filterMap with a different signature, and a different meaning:&nbsp;<a href="https://github.com/RxSwiftCommunity/RxSwiftExt/blob/3.0.0/Source/RxSwift/filterMap.swift#L32" target="_blank" class="">https://github.com/RxSwiftCommunity/RxSwiftExt/blob/3.0.0/Source/RxSwift/filterMap.swift#L32</a></div><div class=""><br class=""></div><div class="">There are already different interpretations on "filter" in "filterMap" in the wild.</div></div></div><div style="word-wrap:break-word" class=""><div class=""><div class=""><br class=""></div><div class="">Gwendal Roué</div><div class=""><br class=""></div></div></div>_______________________________________________<br class="">
swift-evolution mailing list<br class="">
<a href="mailto:swift-evolution@swift.org" target="_blank" class="">swift-evolution@swift.org</a><br class="">
<a href="https://lists.swift.org/mailman/listinfo/swift-evolution" rel="noreferrer" target="_blank" class="">https://lists.swift.org/mailman/listinfo/swift-evolution</a><br class="">
</blockquote></div></div>
_______________________________________________<br class="">swift-evolution mailing list<br class=""><a href="mailto:swift-evolution@swift.org" class="">swift-evolution@swift.org</a><br class="">https://lists.swift.org/mailman/listinfo/swift-evolution<br class=""></div></blockquote></div><br class=""></div></body></html>