-
Notifications
You must be signed in to change notification settings - Fork 13.4k
Added entries to explain expression-oriented languages #27232
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
Changes from 3 commits
1f80880
30584b0
bcee0a8
8fee567
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -3,24 +3,12 @@ | |
Not every Rustacean has a background in systems programming, nor in computer | ||
science, so we've added explanations of terms that might be unfamiliar. | ||
|
||
### Arity | ||
|
||
Arity refers to the number of arguments a function or operation takes. | ||
|
||
```rust | ||
let x = (2, 3); | ||
let y = (4, 6); | ||
let z = (8, 2, 6); | ||
``` | ||
|
||
In the example above `x` and `y` have arity 2. `z` has arity 3. | ||
|
||
### Abstract Syntax Tree | ||
|
||
When a compiler is compiling your program, it does a number of different | ||
things. One of the things that it does is turn the text of your program into an | ||
‘abstract syntax tree’, or ‘AST’. This tree is a representation of the | ||
structure of your program. For example, `2 + 3` can be turned into a tree: | ||
When a compiler is compiling your program, it does a number of different things. | ||
One of the things that it does is turn the text of your program into an | ||
‘abstract syntax tree’, or ‘AST’. This tree is a representation of the structure | ||
of your program. For example, `2 + 3` can be turned into a tree: | ||
|
||
```text | ||
+ | ||
|
@@ -37,3 +25,41 @@ And `2 + (3 * 4)` would look like this: | |
/ \ | ||
3 4 | ||
``` | ||
|
||
### Arity | ||
|
||
Arity refers to the number of arguments a function or operation takes. | ||
|
||
```rust | ||
let x = (2, 3); | ||
let y = (4, 6); | ||
let z = (8, 2, 6); | ||
``` | ||
|
||
In the example above `x` and `y` have arity 2. `z` has arity 3. | ||
|
||
### Expression | ||
|
||
In computer programming, an expression is a combination of values, constants, | ||
variables, operators and functions that evaluate to a single value. For example, | ||
`2 + (3 * 4)` is an expression that returns the value 14. It is worth noting | ||
that expressions can have side-effects. For example, a function included in an | ||
expression might perform actions other than simply returning a value. | ||
|
||
### Expression-Oriented Language | ||
|
||
In early programming languages [expressions][expression] and | ||
[statements][statement] were two separate syntactic categories: expressions had | ||
a value and statements did things. However, later languages blurred this | ||
distinction, allowing expressions to do things and statements to have a value. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Do you have a citation for the claim about early vs. later programming languages? Alternatively, can you just give examples of those languages instead? There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Wish I could provide a citation. I didn't know what expression-oriented languages were and hoped the glossary would help. In the end I read a number of web pages (including Wikipedia!) and my description was the best I could put together. If there are inaccuracies, I just hope someone in the know corrects them!
|
||
In an expression-oriented language, (nearly) every statement is an expression | ||
and therefore returns a value. Consequently these expression statements can | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. missing comma between Consequently and these |
||
themselves form part of larger expressions. | ||
|
||
[expression]: glossary.html#expression | ||
[statement]: glossary.html#statement | ||
|
||
### Statement | ||
|
||
In computer programming, a statement is the smallest standalone element of a | ||
programming language that commands a computer to perform an action. |
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.
missing comma between languages and expression