Ce sont trois façons dont Ruby gère des chunks de code en tant que données. Un block est passé à une méthode (ce n'est pas un objet) ; un Proc et une lambda sont des objets qui enveloppent un block (callable, storable). Les Procs et les lambdas diffèrent subtilement en termes de vérification d'arguments et de comportement de return.
