Proc is the procedure object, which is the
encapsulated block with context, such as local variables and stack
Proc object acts like an unnamed function
except it does not have its own local variable scope. (Although, local
variables which appear first in the block can have distinct value for
Proc.) The non local jump such as
retry raise the exceptions, once
Proc creation methods.
Wraps the block with context and creates a new procedure object.
Executes the procedure wrapped in the object. Arguments to the
call are assigned to the block parameter.