The code that I want to work but does not:
```
function switchEndian(xs: Qubit[]): Unit {
for(i in 0..Length(xs) - 1) {
Qubit q = xs[i];
xs[i] = xs[Length(xs) - 1 - i]
xs[Length(xs) - 1 - i] = q;
}
}
```

On the other hand, what *does work * is to setup a quantum circuit that
performs this flipping, since it's a permutation matrix at the end of
the day. But this is very slow, since it needs to simulate the "quantumness"
of the solution, since it takes `2^n`

basis vectors for `n`

qubits.
However, the usual recursion based solution works:
```
function switchEndian(xs: Qubit[]): Qubit[] {
if(Length(xs) == 1) {
return xs;
} else {
switchEndian(xs[1..(Length(xs) - 1)] + xs[0]
}
}
```

This is of course, suboptimal.
I find it interesting that in the linear types world, often the "pure" solution
is *forced * since mutation very often involves temporaries / copying!
(I'm solving assignments in qsharp
for my course in college)