I agree with Gwendal’s reasoning about the introduction of the term “compact” into the API nomenclature. Removing non-existent values is qualitatively different than selecting a subset of a sequence based on properties of the contained values, and thus merits different terminology. Put a different way: A “filter" shouldn’t change the type of the sequence’s element.
In the case of filterMap(), we have two type transformations going on: T → U? and U? → U. Neither of these is a filter, because neither is an “A → A” transformation. So using the term “filter” is incorrect. The first is a map(), and the second is technically a reduce(). However, reduce() isn’t commonly used in Swift, and the special circumstances surrounding the use of Optional<U>, IMO, deserves a special term, given the frequency with which optionals are used. “Compact” fits that bill very nicely. Therefore, a huge +1 from me on the choice of “compacted()/compacting()/compactMap()" over “filterMap” or whatever. Dave _______________________________________________ swift-evolution mailing list swift-evolution@swift.org https://lists.swift.org/mailman/listinfo/swift-evolution