Actually, this example: puts $2 if (x + y) * (a - b) < 10 Could avoid storing (x + y) by analyzing the AST of the puts expression, noting that $1 does not appear. Recall a similar optimization happens with the proposed it keyword if it is not used on the left hand side. So, that point about RAM I made above is partially wrong, except for the fact that analyzing the AST for the presence of a keyword for optimization reasons seems less kludgy than analyzing it for references to global variables $1, $2.. (since they are in the runtime's name space as opposed to the language syntax itself.)