Cтраница 3
Напротив, в системе, основанной на лямбда-исчислении, с целью построения новых функций применяется лямбда-выражение с соответствующим множеством правил подстановок для переменных. Лямбда-выражение ( с его правилами подстано вок) в состоянии описать все возможные вычислимые функции всех мыслимых типов и с любым количеством аргументов. Эта свобода и выразительность чревата недостатками наряду с очевидными преимуществами. Она аналогична мощи неограниченных операторов управления в традиционных языках: вместе с неограниченной свободой приходит хаос. Если некто постоянно изобретает новые комбинационные формы применительно к возникающим ситуациям, как можно поступать в лямбда-исчислении, то он никогда не познакомится со стилем или полезными свойствами немногих комбинационных форм, подходящих ко всем случаям. Подобно тому как структурное программирование избегает многих управляющих операторов для получения программ с более простой структурой, лучшими свойствами и единообразными методами понимания их поведения, так и функциональное программирование избегает лямбда-выражений, подстановок и множественных типов функций. Благодаря этому получаются программы, построенные из хорошо знакомых функциональных форм с известными полезными свойствами. Эти программы структурированы таким образом, что часто можно понять и доказать их поведение механическим использованием алгебраических приемов, подобных тем, которые применяются при решении задач высшей алгебры. [31]