[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