- Blocks are not objects -> Proc are
- Block contain both the code and a set of binding.
- When a block is defined. It grabs the bindings that exist at that moment(not in the method) and carries them.
- The previous bindings will be replaced by a new set when enter a new scope
- Whenever the program changes scope, binding set will be replaced except instance variables of a method which call another method on the same object