This updates the `if` and `while` expressions so that they each are
presented as a single expression kind with multiple condition operators
instead of being logically separated from their `let` counterparts.
This also includes various fixes and additions.
* Go back to calling the syntactic elements "expressions", but name
them operands afterwards.
* Use "called XYZ" to name something in syntax.
* Trade out a few uses of expressions using letters for operand names
for the actual operand names.
* Pick arbitrary names for the operands. I don't like some of them, but
they're not set in stone.
* Say they're not set in stone in the main expressions chapter.
* Use "the syntax of" uniformly.
* Use asterisks for all defined terms.
* Define more terms, espcially in the syntax section.
** Reword things so that definitions are generally first.
** I did not necessarily go with the best wording; the idea is to
improve, not perfect. I still need to dedicate time to each
expressions individually.
* Remove usage of "the compiler" and "Rust".
** This also involved rewording.
** How to deal with closure types and closure expressions is gonna be
an interesting question to solve. I avoided solving it here.
* Remove non-normative information or put them in a `Note`.
* A few added section headers
* Move links to the bottom
Note that I've left quite a few nonsensical statements alone, such as
any that use "denote". They'll be treated separately.
About halfway through the list of expressions and this PR is getting
large. So I'm gonna cut this one here, stopping at grouped expressions
in the alphabetical list.
I've italicized "operand" showing that it is a definition. I didn't
actually remember that being added to the reference, so I basically
tried to redefine it in the previous commit. I don't like the term, but
since it's already there, I'll just use it.
I also put in a note saying that operator precedence determines the
operands of an expression. That section could probably be written in a
style that better expresses that perspective, but I'm trying to keep
this change minimal.
I also stated that the evaluation of operands is done prior to applying
the effect. This goes in line with the beginning of the chapter with
what the meaning of an expression.
Note also that this only describes the default. Expressions that deviate
from the default already should describe their evaluation order.
This splits the types chapter into multiple subchapters.
I tried to avoid content changes, but I ended up with a few changes:
- Added overview links in `types.md`, and a separate discussion of type expressions.
- Split array and slice into separate chapters. Although there is some overlap between them, I feel like it was awkward explaining one and then the other. I also felt it conflated the two too much since slices can be used for more than arrays.
- Combined `Self` section with the one on the paths page.
- Added a basic redirector for external links.
Some pages may seem a little bare now, but I think each type page has potential to be expanded and improved in the future.