Комбинаторная логика
May. 20th, 2007 06:22 amКомбинаторная логика предлагает представление лямбда-выражений с помощью одной базисной функции (здесь и далее используется вариант записи, используемый в языке Python):
X = lambda f: f (lambda x: lambda y: lambda z: x (z) (y (z))) (lambda x: lambda y: lambda z: x)
С помощью этой функции можно ввести еще три:
K = X (X)
S = X (K)
I = S (K) (K)
На их основе можно переопределить произвольное лямбда-выражение, не содержащее свободных переменных, с помощью набора правил, о которых можно прочесть в статье о комбинаторной логике на Википедии. Нетрудно убедиться, что функция I является тождеством, то есть возвращает собственный аргумент, представляя собой простой пример записи лямбда-выражения в комбинаторной логике.
X = lambda f: f (lambda x: lambda y: lambda z: x (z) (y (z))) (lambda x: lambda y: lambda z: x)
С помощью этой функции можно ввести еще три:
K = X (X)
S = X (K)
I = S (K) (K)
На их основе можно переопределить произвольное лямбда-выражение, не содержащее свободных переменных, с помощью набора правил, о которых можно прочесть в статье о комбинаторной логике на Википедии. Нетрудно убедиться, что функция I является тождеством, то есть возвращает собственный аргумент, представляя собой простой пример записи лямбда-выражения в комбинаторной логике.