Комбинатор неподвижной точки
Комбина́тор неподви́жной то́чки (или оператор неподвижной точки) — это комбинатор, нерекурсивная функция высшего порядка, создающая неподвижную точку другой функции высшего порядка, так что
Наиболее известным комбинатором неподвижной точки является Y-комбинатор в λ-исчислении, введённый известным американским учёным Хаскеллом Карри как
Иногда имя этого комбинатора ошибочно используется для обозначения вообще всех комбинаторов неподвижной точки.
Существует бесконечно много комбинаторов неподвижной точки, например[1]
и т.д. (здесь - это комбинатор Тьюринга).
Языки программирования, в которых допустим комбинатор неподвижной точки, позволяют использовать рекурсию анонимных функций без необходимости присвоения значения такой функции какой-либо переменной. В общем виде, имея функционал, описывающий "один шаг" рекурсивного вычисления,
где обозначает "остаток вычислений", это соответствующая рекурсивная функция
где вызов будет происходить в зависимости от значения . Но получает как значение , и таким образом базисный вычислительный шаг будет повторяться снова и снова, по мере необходимости, без ограничений, как определено значением аргумента:
Теорема о неподвижной точке
И в λ-исчислении, и в комбинаторной логике для каждого терма существует по крайней мере один терм такой, что . И более того, существует комбинатор такой, что .
См. также
Примечания
Литература
- Вольфенгаген В. Э. Комбинаторная логика в программировании. Вычисления с объектами в примерах и задачах. — М.: МИФИ, 1994. — 204 с.; 2-е изд., М.: АО «Центр ЮрИнфоР», 2003. — 336 с. ISBN 5-89158-101-9.
- Mayer Goldberg, (2005) On the Recursive Enumerability of Fixed-Point Combinators, BRICS Report RS-05-1, University of Aarhus
- Matthias Felleisen. A Lecture on the Why of Y Архивная копия от 29 сентября 2007 на Wayback Machine.