> z = Complex[1, 1] > p it if a(z.conj.it!) # prints 1.414..., not Complex[1, -1] If there's anything our functional programming friends can teach us, it's that side effects will always come back to bite you. :) I like your syntax, though. Perhaps there is some wizardry that could be done that would get the semantics of let() but the syntax of it!() ?