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
_______________________________________________ swift-evolution mailing list swift-evolution@swift.org https://lists.swift.org/mailman/listinfo/swift-evolution