a: 10$ b: foo$ /* A simple way to swap values */ [a, b]: [b, a]$ a; /* foo */ b; /* 10 */ /* A macro to hide this */ swap(x, y) ::= buildq([x, y], ([x, y]: [y, x], 'done))$ swap(a, b)$ a; /* 10 */ b; /* foo */