-
-
Notifications
You must be signed in to change notification settings - Fork 35
Clarify that .match selectors are not declarations #750
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Co-authored-by: Addison Phillips <[email protected]>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Feel free to use all or any part of my suggested text, or ignore it -- up to your discretion.
> [!NOTE] | ||
> A _selector_ is not a _declaration_. | ||
> Even when the same _function_ can be used for both formatting and selection | ||
> of a given _operand_ | ||
> the _annotation_ that appears in a _selector_ has no effect on subsequent | ||
> _selectors_ nor on the formatting used in _placeholders_. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
> [!NOTE] | |
> A _selector_ is not a _declaration_. | |
> Even when the same _function_ can be used for both formatting and selection | |
> of a given _operand_ | |
> the _annotation_ that appears in a _selector_ has no effect on subsequent | |
> _selectors_ nor on the formatting used in _placeholders_. | |
> [!NOTE] | |
> _Expressions_, including _expressions_ that appear as _selectors_, | |
> have no side effects and are not _declarations_. | |
> That is, they do not introduce or override _variable_ names. | |
> This means that the _annotation_ of a _variable_ in a _selector_ | |
> does not change what is bound to the _variable_, | |
> even if the same _function_ can be used for both formatting and selection | |
> of a given _operand_. | |
> The meaning of a _variable_ reference that occurs within a _variant_ | |
> depends only on the explicit or implicit _declaration_ of that _variable_. |
Just a suggestion. I think this text is difficult to understand outside the context of the discussions we've been having, and without an example. The same might be true of my suggested text. I guess if it's confusing, people will ask about it during the tech preview feedback period.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The right hand size of a .local
is an expression, so your suggestion might be confusing from that respect?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Doesn't seem like it to me. An expression is not a declaration; it can appear in a declaration, but not every term that an expression can appear in is a declaration. ("Term" = "subtree of the data model".)
Alternately, the text could begin with something like "Only a .local
or an .input
declaration can change the meaning of a variable." Though this isn't quite true, as free variables introduce what we call "implicit declarations" someplace. A .match
can't contain declarations (not even implicit declarations, since the only place where an "implicit declaration" makes sense is in a context where further names can be introduced) so it's clear from that that nothing within a .match
changes the meaning of any variable name.
Every phrasing I can think of is made more complicated by implicit declarations, though.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I find this suggested text harder to parse than the current succinct text.
We already have the whole surrounding formatting.md
which effectively says that same thing that the note does; this is intended to clarify the situation wrt. selectors specifically, and going into details and explanations here doesn't really help with that.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@catamorphism Would you object to my merging the text as is? We're definitely coming back to the whole "resolved value" space later 😄
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@aphillips I don't object!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks. Merging now... the end of the 45 train is coming 🚄
Closes #748
Adds a clarifying note about
.match
not acting as a declaration and updates misleading examples.