Свободные переменные и модульность

Идея модульности:

Языки программирования сильно различаются и по степени удобства разбиения, и по качеству клея.

Чёрные ящики аналогичны деталям головоломки. Подходящие края -  это "нормальный" способ комбинации функций: передача аргументов и возврат значения. Никаких лишних проводов, торчащих наружу.

Каждая свободная переменная в теле определения функции - это один провод. Такие провода требуют дополнительных усилий:

Удобство языка зависит возможности работы со свободными переменными.