On Nov 20, 2017, at 1:31 PM, John McCall via swift-evolution 
<swift-evolution@swift.org> wrote:
> 
>> On Nov 20, 2017, at 12:22 PM, BJ Homer <bjho...@gmail.com 
>> <mailto:bjho...@gmail.com>> wrote:
>>> On Nov 20, 2017, at 10:09 AM, Drew Crawford via swift-evolution 
>>> <swift-evolution@swift.org <mailto:swift-evolution@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

_______________________________________________
swift-evolution mailing list
swift-evolution@swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to