Word can refer to any context at any point in run-time.
Yes, but only 1 at time, right?
@secretis still a variable (taken from: http://ruby-doc.org/core-2.4.0/Binding.html ):
class Demo def initialize(n) @secret = n end def get_binding return binding() end end k1 = Demo.new(99) b1 = k1.get_binding k2 = Demo.new(-3) b2 = k2.get_binding eval("@secret", b1) #=> 99 eval("@secret", b2) #=> -3 eval("@secret") #=> nil
any-word!), and context is provided by separate values (
function!). Binding is a relation between two separate entities, which you can manipulate at run-time (words and functions/objects). Variable, on the other hand, is a way to reference a value, but not a relation between the two values.
@nedzadarek since "variable is a way to reference a value", "variable" (in your interpretation) can be either:
Word is not a variable in any of these cases, it never refers to the value directly, it's always refers to a context provided by some value (either by object on the heap or by function on the call stack).