Docs > Control Flow
        For loops use for-in format:
        ```
        for x in y {
            ...
        }
        ```
        Here, in `...`, `x` would be bound to the next item in `y`. You can also omit the name, and it will be bound to `_`:
        ```
        for y {
            ...
        }
        ```
        Here we could access `_` in `...`.
        While loops function as normal:
        ```
        while e {
            ...
        }
        ```
        Here `...` will be run until `e` is false.
        We don't have to pass a block to any of these constructs:
        ```
        while e ...
        ```
        This will work whenever `...` is a single expression.
        `if` also functions as normal:
        ```
        if a {
           ...
        } else {
           ...
        }
        ```
        Once again, both `...`s can be changed to single expressions instead of blocks. Note that the `else` is optional.
        All control flow constructs are expressions. `while` and `for` evaluate to the last expression evaluated in their bodies; `if` evaluates to whatever condition was true. For example, `if true 5 else 6` evaluates to `5`, but `if false 5 else 6` evaluates to `6`. Thus, `if` can be used as a ternary. Because `if` is an expression, we can use `else if` for multiple conditions:
        ```
        if a {
            ...
        } else if b {
            ...
        } else {
            ...
        }
        ```
            
            