Hello,

>       • What is your evaluation of the proposal?

I'm neutral. My humble contribution is about the name of the method, since many 
reactions so far have a problem with the proposed filterMap name.

I'm found of Ruby's `compact` method. Its role is to filter out nils:

        [1, 2, nil, 4].compact # => [1, 2 3]

This is not exactly what our discussed flatMap does, I know. Ruby's compact 
does not take a mapping closure. Swift's flatMap removes only one level of 
nils, as many contributors have reminded us. I know, I know.

I'd suggest `compactMap` as an alternative name, should `filterMap` find too 
much resistance:

        [1, 2, nil, 4].compactMap { $0 } // [1, 2, 4]
        ["1", "foo"]..compactMap { Int($0) } // [1]

I'd even suggest adding `compact()` as a shorthand for `compactMap { $0 }`, 
since filtering out nils as a very common operation.

"Compact" has the advantage of being a short word. "Compacting" a collection 
would just mean removing its nils, a concept that could easily stick in 
developers' minds, as Ruby has shown.

>       • Is the problem being addressed significant enough to warrant a change 
> to Swift?

No. I too am guilty of having used flatMap when map was enough. Another name 
would not have changed this. It was just part of my learning phase.

Gwendal Roué

_______________________________________________
swift-evolution mailing list
[email protected]
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to