> On 31 Jan 2017, at 01:59, Joe Groff via swift-evolution > <swift-evolution@swift.org> wrote: > > To be honest, I would say that there's no "reason" for this, except as > lingering effects of our early "functions have simple names, and arguments > have labeled tuple type" model. If we had originally implemented the language > with its current (at least aspirational) Smalltalk-ish compound-names model, > we probably would have ended up allowing this, since the var and func do > formally have different names. The ability to reference a function by only > the first segment of its name is likewise legacy of the original model, > though it happens to be useful since good naming hygiene encourages different > base names for different things to begin with.
It seams like there is discussion to be had, comparing these models: [A] functions have simple names, and arguments have labeled tuple type model [B] model where we strictly require the labels for referring to n-ary functions (e.g. "insert(cell:, into:)" instead of "insert") --- > Example that does not compile: > > let randomArray = randomArray(withCapacity: 4096) I like [B] because it does solve cases of ambiguity, where only using the base-name of the func causes the "Variable used within its own initial valueā€¯ described by Michael. What are some advantages of [A]? I assume that tuple splatting (i.e. passing a tuple of args when calling a n-ary function) is one of them, or is that not related? _______________________________________________ swift-evolution mailing list swift-evolution@swift.org https://lists.swift.org/mailman/listinfo/swift-evolution