mirror of
https://github.com/luau-lang/luau.git
synced 2025-05-04 10:33:46 +01:00
Update syntax-list-comprehensions.md
This commit is contained in:
parent
64cd591b96
commit
fb1c5c2f1e
1 changed files with 36 additions and 1 deletions
|
@ -1,6 +1,6 @@
|
||||||
## Summary
|
## Summary
|
||||||
|
|
||||||
Introduce a form of list comprehension using `for var in iterator do` syntax.
|
Introduce a form of list comprehension using `n for-in-do` syntax.
|
||||||
|
|
||||||
## Motivation
|
## Motivation
|
||||||
|
|
||||||
|
@ -12,3 +12,38 @@ When traversing a table to exclude all the odd numbers you'd be creating a large
|
||||||
## Design
|
## Design
|
||||||
|
|
||||||
To solve these problems, I propose a `n for-in-do` expression form that is syntactically similar to a for statement, but lacks terminating `end`.
|
To solve these problems, I propose a `n for-in-do` expression form that is syntactically similar to a for statement, but lacks terminating `end`.
|
||||||
|
|
||||||
|
The `n for-in-do` expression must match ``<identifier> for <identifier> in <expr> do``
|
||||||
|
|
||||||
|
## Drawbacks
|
||||||
|
|
||||||
|
List comprehensions may be misused.
|
||||||
|
|
||||||
|
The list comprehensions have similar drawbacks to the if expression drawbacks
|
||||||
|
https://github.com/Roblox/luau/blob/master/rfcs/syntax-if-expression.md
|
||||||
|
|
||||||
|
## Alternatives
|
||||||
|
|
||||||
|
### C#
|
||||||
|
```csharp
|
||||||
|
var list2 = from number in Enumerable.Range(0, 10) select 2*number;
|
||||||
|
```
|
||||||
|
|
||||||
|
### Rust (using cute)
|
||||||
|
```rust
|
||||||
|
let vector = c![x, for x in 1..10, if x % 2 == 0];
|
||||||
|
```
|
||||||
|
|
||||||
|
### Haskell
|
||||||
|
```haskell
|
||||||
|
[x * 2 | x <- [0 .. 99], x * x > 3]
|
||||||
|
```
|
||||||
|
|
||||||
|
### R
|
||||||
|
```r
|
||||||
|
x <- 0:100
|
||||||
|
S <- 2 * x[x ^ 2 > 3]
|
||||||
|
```
|
||||||
|
|
||||||
|
### Function syntax
|
||||||
|
List comprehensions could be implemented as functions like ``table.map`` or ``table.filter``
|
||||||
|
|
Loading…
Add table
Reference in a new issue