[1 2 3 4] | reduce {|elt acc| $elt + $acc }
{x: 1, y: 2}
{x: 1 y: 2}
[1 2] | zip [3 4]
[]
(1 + 2) * 3
```
Incorrect:
```nu
# too many spaces before "|el|": no space is allowed
[[status]; [UP] [UP]] | all { |el| $el.status == UP }
# too many spaces before ",": no space is allowed
[1 2 3 4] | reduce {|elt , acc| $elt + $acc }
# too many spaces before "x": no space is allowed
{ x: 1, y: 2}
# too many spaces before "[3": one space is required
[1 2] | zip [3 4]
# too many spaces before "]": no space is allowed
[ ]
# too many spaces before ")": no space is allowed
(1 + 2 ) * 3
```
#### Multi-line Format
Multi-line format is a format for writing all commands in several lines. It inherits all rules from one-line format
and modifies them slightly.
**It's recommended to** default to this format:
1. while you are writing scripts
2. in scripts for lists and records while they either:
1. more than 80 characters long
2. contain nested lists or records
3. for pipelines more 80 characters long
Rules:
1. general:
1. **It's required to omit** trailing spaces.
2. block and closure bodies:
1. **It's recommended to** put each body pipeline on a separate line.
3. records:
1. **It's recommended to** put each record key-value pair on separate line.
4. lists:
1. **It's recommended to** put each list item on separate line.
5. surrounding constructs:
1. **It's recommended to** put one `\n` before opening square `[`, curly brace `{`, or parenthesis `(` if preceding symbol is not the and applying this rule produce line with a singular parenthesis.
2. **It's recommended to** put one `\n` after closing square `]`, curly brace `}`, or parenthesis `)` if following symbol is not the same and applying this rule produce line with a singular parenthesis.
Correct:
```nu
[[status]; [UP] [UP]] | all {|el|
$el.status == UP
}
[1 2 3 4] | reduce {|elt, acc|
$elt + $acc
}
{x: 1, y: 2}
[
{name: "Teresa", age: 24},
{name: "Thomas", age: 26}
]
let selectedProfile = (for it in ($credentials | transpose name credentials) {
echo $it.name
})
```
Incorrect:
```nu
# too many spaces before "|el|": no space is allowed (like in one-line format)
[[status]; [UP] [UP]] | all { |el|
# too few "\n" before "}": one "\n" is required
$el.status == UP}
# too many spaces before "2": one space is required (like in one-line format)
[1 2 3 4] | reduce {|elt, acc|
$elt + $acc
}
{
# too many "\n" before "x": one-line format required as no nested lists or record exist
x: 1,
y: 2
}
# too few "\n" before "{": multi-line format required as there are two nested records
[{name: "Teresa", age: 24},
{name: "Thomas", age: 26}]
let selectedProfile = (
# too many "\n" before "foo": no "\n" is allowed
for it in ($credentials | transpose name credentials) {
echo $it.name
})
```