[swift-evolution] [Review] SE-0187: Introduce Sequence.filterMap(_:)

Kevin Ballard kevin at sb.org
Wed Nov 8 12:23:22 CST 2017


On Tue, Nov 7, 2017, at 05:23 PM, Tino Heth via swift-evolution wrote:
> -1
> 
> I guess breaking existing code will be the show stopper for this
> proposal — but I generally think that compatibility is a poor
> rationale to stop an improvement, so my personal reasons are
> different:> The name is just wrong.
> Just have a look at this simple example
> 
> extension Int {
>     func justImagineError() throws -> Int {
>         return self
>     }
> }
> 
> let ints: [Int?] = [nil]
> 
> let result = ints.flatMap {
>     return try? $0?.justImagineError()
> }
> print(result)
> 
> If flatMap would really filter out nil values, this should yield an
> empty array as result — but the actual output is *[nil]*
flatMap does filter out nil values. The problem is the return type of
your block is `Int??`, not `Int?`, so it's stripping off the outer layer
of optionals. Your example here is akin to one where your block returns
`[[[Int]]]` and asking why your resulting type is `[[Int]]`.
-Kevin Ballard
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.swift.org/pipermail/swift-evolution/attachments/20171108/23f9ef61/attachment.html>


More information about the swift-evolution mailing list