-
Notifications
You must be signed in to change notification settings - Fork 5
Description
2022-03 plenary bikeshedding slides
Possible criteria
Syntactic clarity
Would human readers often have difficulty with determining the syntax’s grouping?
Conciseness
Is the syntax significantly improve conciseness over the status quo?
Natural word order
Is the syntax’s word order more natural (e.g., subject.verb(object)) than the status quo?
Confusability with other JS features
Is there a risk of beginners and other developers confusing the syntax with regular dot property access?
Confusability with other languages
Is there a risk of developers confusing the syntax with visually similar syntaxes from other languages – especially if they have different semantics?
Overlap with other JavaScript features
Does the syntax greatly overlap with other features of the language?
(Note: A finding from the January post-plenary overflow meeting says, “In general, some overlap is okay, but too much is bad; we have to decide this on a case-by-case basis.”)
List of candidates
Receiver-first style (loose unbracketed)
This style was originally called “bind-this”, but we dropped function binding from it in 2022-03, so we renamed the style to “receiver first”.
rec :> fn(arg0)
rec ~> fn(arg0)
rec !> fn(arg0)
rec -> fn(arg0)
rec #> fn(arg0)
rec ~~ fn(arg0)
Receiver-first style (tight bracketed)
This style was originally called “bind-this”, but we dropped function binding from it in 2022-03, so we renamed the style to “receiver first”.
rec:>fn(arg0)
rec~>fn(arg0)
rec->fn(arg0)
rec::fn(arg0)
rec:.fn(arg0)
rec-.fn(arg0)
rec..fn(arg0)
Receiver-first style (bracketed)
rec~[fn](arg0)
rec
rec#[fn](arg0)
rec..[fn](arg0)
Function-first style
This style was originally called “call-this”, but we are now calling it “function first” to distinguish it from receiver-first call-this. See the original explainer by @tabatkins.
fn@.(rec, arg0)
This-argument style
First proposed by @rbuckton.
fn(this: rec, arg0)
Original post
@rkirsling brought up in Matrix a few days ago the reasonable concern that ->
may still be confusing to beginners with .
.
I would be GENUINELY scared at making every beginner worry about "was it
.
that I'm supposed to write? but there's also->
..."
->
is a charged symbol. It has precedent as “method call” in Perl and PHP, but this proposal is for an operator that simply “changes the receiver of a function”, which is related but different.
I’m not a huge fan of ::
, since that reads as “namespacing” to me, but I plan to tentatively switch back from ->
to ::
before the October plenary. There’s also ~>
and ~~
as possibilities. I don’t have any better ideas for its spelling right now.