I was always assuming that the only difference between Set
(=
) and SetDelayed
(:=
) is that SetDelayed
holds the right argument, so that a := b
is effectively the same as a = Unevaluated[b]
. Especially I assumed that after the assignment is done, there's no further difference for variables or functions assigned with Set
and variables assigned with SetDelayed
. Looking at OwnValues
resp. DownValues
seems to support that assumption.
However I now noticed that when writing ?a
, Mathematica displays the type of assignment used for the definition, which means it has to store it somewhere. And I somehow doubt that it only stores it in order to show it with ?
.
Therefore my question is: Is there any difference in the behaviour of values assigned with =
and with :=
(apart from the different output of ?
), assuming the actual assigned expression is the same (i,e, OwnValues
/DownValues
have the same value after both assignments)?