This discussion is completely in the context of DynamicModule
, which appears to be irrelevant when we consider the following examples.
x := Print["hello"];
ToString @@ Unevaluated /@ Dynamic[x]
and
y[] := Print["hello"];
ToBoxes[ToString @@ Unevaluated /@ Dynamic[y[]]]
Where in the first example x
is evaluated, but in the second example y[]
is not. So while Michael is probably right that the behavior occurs because we want more speedy evaluation, it does not have to do with DynamicModule
.
I don't know if I like my interpretation of the examples below anymore. I will just leave them here though