[swift-evolution] [Review] SE-0059: Update API Naming Guidelines and Rewrite Set APIs Accordingly
Dave Abrahams
dabrahams at apple.com
Thu Apr 7 15:32:57 CDT 2016
on Sun Apr 03 2016, Shawn Erickson <swift-evolution at swift.org> wrote:
> On Sun, Apr 3, 2016 at 6:41 AM Michel Fortin via swift-evolution
> <swift-evolution at swift.org> wrote:
>
> > What is your evaluation of the proposal?
>
> I don't like "form" as a prefix. To me there is no difference between `union
> ` and `formUnion`: both sounds functional-style, and actually the second one
> perhaps a bit more to my ears. There's basically two dictionary definitions
> of "form":
>
> 1. "bring together parts or combine to create (something)" which to me
> implies a new value is created, and
> 2. "make or fashion into a certain shape or form" which would imply that the
> material you start with is transformed, which is apparently the intended
> meaning and also the reverse meaning from the above.
>
> I mean, doesn't this make sense as an API?
>
> let donut = baker.formDonut(dough) // non-mutating
>
> Perhaps instead of "form" we could use "become" as a prefix when the
> operation is naturally described by a noun. That would seem less ambiguous
> to me:
>
> a.becomeUnion(b)
> a.becomeIntersection(b)
> a.becomeSuccessor(b)
>
> It's a bit passive, but I find it fits well when the operation is a noun.
>
> And there's no way the term lends itself to non-mutating cases without
> things becoming nonsensical:
>
> let donut = baker.becomeDonut(dough) // non-mutating?
>
> I also am having difficulty coming to terms with the use of "form" (I
> am a native English speaker). As you note "form" can imply the
> creation of something from parts (more like assembling a new thing) as
> well as the creation of something out of a material say a of block
> clay (more like molding something out of an existing thing). It
> doesn't seem clear cut to me to imply in place mutation.
>
> Additionally my eyes / brain keep seeing "from" instead of
> "form". This type of issue is generally true with any short word made
> up of the same set of letters (made worse since "from" is more common
> in programming then "form"). The mind quickly narrows in on a set of
> possible words given the letters we see and then uses context to help
> get the correct one and/or additional visual parsing to understand the
> exact ordering of letters (more energy expended). Anyway since I keep
> seeing "from" instead of "form" I keep going in the direction of
> thinking it returns something made from the two (or more) items
> involved (not really sure why "from" goes that direction in my head,
> it could also go the in place direction).
These are all good points.
> I would prefer something other then "form" (note I just typed "from" by
> mistake)... I think your suggestion of "become" has merit.
>
> y.becomeUnion(x) --reads to me as--> "y become union with x"
> y.formUnion(x) --read to me as--> "y from oops... y forming a union of x"
> y.becomeIntersection(x) --reads to me as--> "y become intersection with x"
> y.formIntersection(x) --read to me as--> "y from oops... y forming an
> intersection with x"
I don't like its verbosity, but it does solve the "from" problem.
> In the "forming" situations it – to me – is ambiguous on if that is in
> place or not. To me it implies more of giving something new back.
>
> I am -1 on "form" aspect of this proposal. ...of course things are
> learnable as long as things are fairly consistent and not to far out
> of the norm for typical language use. Personally I don't see "form" as
> that typical in English.
>
> -Shawn
>
> _______________________________________________
> swift-evolution mailing list
> swift-evolution at swift.org
> https://lists.swift.org/mailman/listinfo/swift-evolution
--
Dave
More information about the swift-evolution
mailing list