> On Mar 23, 2016, at 3:36 PM, Andrey Tarantsov via swift-evolution > <swift-evolution@swift.org> wrote: > >> * Are the current stdlib names for optional map and flatMap misleading? > > Not so much misleading, as being unfortunate when optionals and collections > end up as neighbors in the code. > > >> * Are the current stdlib functions for optional closure application >> appropriate and sufficient? >> >> public func f1<U>(@noescape f: (Wrapped) throws -> U) rethrows -> U? >> public func f2<U>(@noescape f: (Wrapped) throws -> U!) rethrows -> U! >> public func f3<U>(@noescape f: (Wrapped) throws -> U) rethrows -> Void > > I don't see why flatMap needs to be separate from map. It just does not make > sense. I would only have > > public func f2<U>(@noescape f: (Wrapped) throws -> U?) rethrows -> U? > > and would call it "ifPresent", "then", "unwrap", "transform" or something > like that.
Optionals of Optionals are valid, and it would be ambiguous which would be returned from a map overloaded to allow both optional and non-optional transform functions. So, map always assumes the transform returns a non-optional, and if it returns an optional value (and that was not what you wanted) you have to flatten. Hence flatMap to combine the two steps. -DW
signature.asc
Description: Message signed with OpenPGP using GPGMail
_______________________________________________ swift-evolution mailing list swift-evolution@swift.org https://lists.swift.org/mailman/listinfo/swift-evolution