Exchanges the values a and b point to.
a
b
swap :: (a: *$T, b: *T)
x := 1; y := 2; swap(*x, *y); assert(x == 2 && y == 1);