[swift-evolution] [swift-evolution-announce] [Accepted and Focused Re-review] SE-0187: Introduce Sequence.filterMap(_:)

Erica Sadun erica at ericasadun.com
Mon Nov 20 16:23:43 CST 2017


On Nov 20, 2017, at 1:31 PM, John McCall via swift-evolution <swift-evolution at swift.org> wrote:
> 
>> On Nov 20, 2017, at 12:22 PM, BJ Homer <bjhomer at gmail.com <mailto:bjhomer at gmail.com>> wrote:
>>> On Nov 20, 2017, at 10:09 AM, Drew Crawford via swift-evolution <swift-evolution at swift.org <mailto:swift-evolution at swift.org>> wrote:
>>> 
>>> The typical case for this function in my code is the identity closure, that is
>>> 
>>>     let a: [Int?] = ...
>>>     print(a.filterMap {$0})
>>> 
>>> filterMap is quite poor for this situation because *each* component in the term is inaccurate:
>> 
>> filterMap is indeed an awkward name for this use case, just like flatMap is. In my experience, about half of my use cases use the identity closure, and half actually make use of the closure in a meaningful way. I would support a proposal to add something like Sequence.dropNils (actual name to be determined), and then we could let this proposal target the non-identity-closure use case.
> 
> If the identity closure (i.e. "please remove the nils from this sequence") is a common use case, then I absolutely agree that we should consider adding a specific operation for that, and that name might illuminate the right name for the mapping version.
> 
> John.

Just throwing this out there, but would it be the worst thing in the world if `transform: (Optional<T>) throws -> U` defaulted to {item: T in return T}`?

Otherwise, I don't think `removeNils` is necessary as in my experience, the optional sequence or array was generated by some kind of transform operation.

-- E

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20171120/31817d41/attachment.html>


More information about the swift-evolution mailing list