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)