On Nov 20, 2017, at 1:31 PM, John McCall via swift-evolution
<[email protected]> wrote:
>
>> On Nov 20, 2017, at 12:22 PM, BJ Homer <[email protected]
>> <mailto:[email protected]>> wrote:
>>> On Nov 20, 2017, at 10:09 AM, Drew Crawford via swift-evolution
>>> <[email protected] <mailto:[email protected]>> 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
_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution