[swift-evolution] [Review] SE-0187: Introduce Sequence.filterMap(_:)

Ben Cohen ben_cohen at apple.com
Thu Nov 9 13:48:27 CST 2017



> On Nov 9, 2017, at 10:45 AM, BJ Homer via swift-evolution <swift-evolution at swift.org> wrote:
> 
> On Nov 9, 2017, at 11:36 AM, Kevin Ballard via swift-evolution <swift-evolution at swift.org <mailto:swift-evolution at swift.org>> wrote:
>> 
>> On Wed, Nov 8, 2017, at 09:29 PM, Paul Cantrell via swift-evolution wrote:
>>> The problem in the Doodads example is that the name flatMap is used to identify two distinct intents: concatenating arrays and filtering nils. One can argue that those two operations are, in some lofty abstract sense, if you squint, two instances of some more general pattern — but I don’t think it’s fair to say that they represent the same intent. These separate intents deserve separate names.
>> 
>> They absolutely represent the same intent if you think of an optional as a collection of zero or one elements.
>> 
>> -Kevin Ballard
> 
> But as `Optional` does not conform to collection, I would suggest that the vast majority of of developers do _not_ think of them as a collection of zero or one elements. (I certainly don’t know any who naturally think of it that way.) We don’t treat Optional as a collection anywhere else in the API, and it seems odd to do so in just this one case.
> 

And, to be clear, the lack of Collection conformance by Optional is an active choice, not an omission.

The “think of optionals as collections” explanation is a good way to help people who are confused by the overload. But an even better way would be to not have a confusing overload in the first place.

> -BJ
> _______________________________________________
> 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/20171109/c986114e/attachment.html>


More information about the swift-evolution mailing list