## 6.2.4. Comprehensions for Lists, Sets and Dictionaries

To construct a list, set, or dictionary, AVAP provides special syntax called "comprehension," each in two flavors:

* The contents of the container are listed explicitly.
* They are computed using a set of loop and filtering instructions, called a "comprehension."

Common syntax elements for comprehensions are:

```javascript
comprehension ::=  assignment_expression comp_for
comp_for      ::=  "for" target_list "in" or_test [comp_iter]
comp_iter     ::=  comp_for | comp_if
comp_if       ::=  "if" or_test [comp_iter]
```

A comprehension consists of a single expression followed by at least one  `for`  clause and zero or more  `for`  or  `if`  clauses. In this case, the elements of the new container are those produced by considering each  `for`  or  `if`  clause as a block, nested from left to right, and evaluating the expression to produce an element each time the innermost block is reached.
