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