> 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")
> 
> 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?


Imho B has drawbacks which count as advantages for A:

- More typing (obvious, although not that terrible)

- Can easily be confused with an actual function call (imho "(" is tightly 
coupled with the idea of "ah, that's a function that is called"):

func f(_ arg: Int) -> Int {
        print(arg)
        return 0
}

func f(arg: Int) -> Int {
        print("Not", arg)
        return arg
}

let arg = 1

let outFunc = f(arg:)
let outInt = f(arg)

- May look odd (especially if you are used to functions in math)

func g(_ a: Int, _ b: Int) -> Int {
        return a + b
}

let looksLikePearl = g(:, :) // "Expected expression in list of expressions" - 
compiler doesn't like it either ;-)

> Am 31.01.2017 um 01:59 schrieb Joe Groff via swift-evolution 
> <swift-evolution@swift.org>:
> 
> 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.

+1, hope the short syntax stays the preferred choice when there is no ambiguity.

- Tino
_______________________________________________
swift-evolution mailing list
swift-evolution@swift.org
https://lists.swift.org/mailman/listinfo/swift-evolution

Reply via email to