Another reason to allow swapping values ( {a, b} = {b, a} ) is nice parallel semantics that might provide cool features on some future (or niche) parallel hardware. Think of {a, b} = {funcA(), funcB()}; Parallel semantics is able to evolve to parallel execution, which is one cool feature. In Go language it is so.