These are three ways Ruby handles chunks of code as data. A block is passed to a method (not an object); a Proc and a lambda are objects that wrap a block (callable, storable). Procs and lambdas differ subtly in argument checking and return behavior.
