Это три способа работы Ruby с фрагментами кода как с данными. Блок передаётся методу (это не объект); Proc и lambda — это объекты, которые оборачивают блок (они вызываемы и сохраняемы). Proc и lambda отличаются тонкими различиями в проверке аргументов и поведении return.
