Введение

Язык программирования FP (сокращение от функционального программирования) в конечном итоге привел к появлению современных функциональных языков, которые в значительной степени основаны на парадигме лямбда-исчисления, а не на парадигме уровня функций, на которую надеялся Бэкус. В своей работе, удостоенной премии Тьюринга, Бэкус описал, чем стиль FP отличается:

> Система FP основана на использовании фиксированного набора комбинирующих форм, называемых функциональными формами. Эти формы, вместе с простыми определениями, – единственный способ построения новых функций из существующих; они не используют переменных или правил подстановки и становятся операциями связанной алгебры программ. Все функции в системе FP имеют один тип: они отображают объекты на объекты и всегда принимают один аргумент. В 1980-х годах Бэкус создал язык-преемник FL в качестве внутреннего проекта в IBM Research.

ФП84

FP84 — это расширение FP, включающее бесконечные последовательности, определяемые программистом объединяющие формы (аналогичные тем, которые сам Бэкус добавил в FL, его преемник FP), и ленивые вычисления. В отличие от FFP, еще одной вариации FP, разработанной Бэкусом, FP84 проводит четкое различие между объектами и функциями: то есть, функции больше не представляются как последовательности объектов. Расширения FP84 достигаются за счет снятия ограничения FP, согласно которому построение последовательности применимо только к объектам, отличным от ⊥. В FP84 вся вселенная выражений (включая выражения со значением ⊥) замкнута относительно построения последовательностей. Семантика FP84 выражена в базовой алгебре программ, представляющей собой набор равенств на уровне функций, которые можно использовать для манипулирования и рассуждений о программах.