I prefer the `foo(_)` option and keeping the one-colon-per-arg rule.

Intuition:
Underscore means no label. Colon means one argument.
foo(_:) – one arg with no label
foo(_) – no arg with no label

-Richard

> On Feb 22, 2017, at 14:27, Jacob Bandes-Storch via swift-evolution 
> <swift-evolution@swift.org> wrote:
> 
> Just to throw out some other options: foo(#) and foo(@). 
> 
> (And you thought we'd gotten rid of # argument labels! 😉)
> 
> On Wed, Feb 22, 2017 at 11:48 AM David Sweeris <daveswee...@mac.com 
> <mailto:daveswee...@mac.com>> wrote:
> 
> > On Feb 22, 2017, at 11:05 AM, Matthew Johnson <matt...@anandabits.com 
> > <mailto:matt...@anandabits.com>> wrote:
> >
> >
> >> On Feb 22, 2017, at 12:30 PM, David Sweeris <daveswee...@mac.com 
> >> <mailto:daveswee...@mac.com>> wrote:
> >>
> >>
> >>> On Feb 22, 2017, at 7:48 AM, Matthew Johnson via swift-evolution 
> >>> <swift-evolution@swift.org <mailto:swift-evolution@swift.org>> wrote:
> >>>
> >>> I like this idea.  I think you made the right choice of syntax given the 
> >>> alternatives considered.  To me `foo(_)` and `foo(:)` equally imply 
> >>> presence of an argument.  The former looks like an anonymous (unnamed) 
> >>> argument and the latter includes the colon which only follows an 
> >>> argument.  Between the two `foo(:)` is the better choice because it 
> >>> doesn’t look like a pattern as has been pointed out.
> >>>
> >>> I’m going to do a little brainstorming to try and come up with something 
> >>> that works and doesn’t imply an argument at all but suspect I’ll come up 
> >>> empty handed.
> >>
> >> What about “foo(Void)”? It might be fairly easily confused with 
> >> “foo(:Void)”, but in practice, how likely is it for someone to declare 
> >> both `foo()` and `foo(_: Void)`?
> >
> > I almost threw out `foo(Void)` and `foo(Never)` as ideas.  There is at 
> > least one problem with these.  We will hopefully eventually get rid of the 
> > need to say `.self` in expressions like `Int.self`.  If we are able to do 
> > that then `foo(Void)` and `foo(Never)` are syntactically valid function 
> > calls.
> 
> Oh, good point! Hrmm… “foo(#null)”/“foo(#nullary)"? I can’t imagine either of 
> those would ever be valid function calls, and they get the point across (the 
> later more than the former, but it’s more to type). I don’t like that syntax 
> for the name of “shortest” version of the function isn’t shorter than the 
> syntax of the name for other versions of the function, though.
> 
> - Dave Sweeris
> _______________________________________________
> swift-evolution mailing list
> swift-evolution@swift.org
> https://lists.swift.org/mailman/listinfo/swift-evolution

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

Reply via email to