> Am 08.11.2017 um 19:23 schrieb Kevin Ballard via swift-evolution 
> <swift-evolution@swift.org>:
> 
> 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.
The filter function afaik doesn’t perform that kind of stripping - if you feed 
it [A?], you get [A?] as output, no matter what kind of predicate you use, it 
can only eliminate values (Optional.none), not change their type.
_______________________________________________
swift-evolution mailing list
swift-evolution@swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to