In Snap!, as in almost all programming languages, the expressions that provide inputs to procedures are evaluated before the procedure is called. So when you say list x y, the two input expressions x and y are evaluated before list is called. So list knows only that the values of its inputs are 0 and 0; it has no idea what expressions gave rise to those zeros.