Assignments
The assignment looks like definition. The behavior of assignment is to first look for the {name}
in current context, and if it cannot find it, it will look for it in the outer context, until it is found. If not found it, a new {name}
will be created in current context.
({name} = {value})
You should define the {name}
firstly, then can refer it. The below example will raise error.
(puts: foo) # runtime error: 'foo' is not found #
(foo = 1)