Комбинатор неподвижной точки

Комбина́тор неподви́жной то́чки (или оператор неподвижной точки) — это комбинатор, нерекурсивная функция высшего порядка , создающая неподвижную точку другой функции высшего порядка , так что

Наиболее известным комбинатором неподвижной точки является 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.