Очевидно, что проки и лямбды являются необходимым компонентом всего, что связано с обратными вызовами, но в большинстве случаев в ruby это может быть выполнено с помощью блока.
Одним из мест, где полезны проки или лямбды, которые не связаны с обратными вызовами, являются такие вещи, как составление регулярного выражения. Конечно, регулярные выражения являются частью языка, поэтому для этого вам не нужны процы, но вы можете написать какую-то другую процедуру, которая имеет разовую стоимость, которую можно использовать повторно, но на самом деле создавать ее не стоит полноценный класс.
В моем случае у меня был объект (publist), который содержал список строк. В одной области кода мне нужно было многократно проверять, есть ли в этом списке другие члены. Было бы неудобно и иметь низкую производительность изменять тип данных, чтобы объект содержал набор. Поэтому я создал метод, который возвращал лямбду-сопоставитель с локальным представлением набора этого списка.
Я мог бы вернуть набор, но бизнес-логика того, соответствует ли элемент логически списку публикации. Я мог бы в будущем изменить это, чтобы поддерживать подстроки или регулярные выражения, и пользователи matcher будут по-прежнему иметь тот же API.