Комбинатор Y: некоторые функции не имеют фиксированных точек

Статья Википедии о комбинаторе Y предоставляет следующую реализацию комбинатора Y на JavaScript:

function Y(f) {
    return (
        (function (x) {
            return f(function (v) { return x(x)(v); }); })
        (function (x) {
            return f(function (v) { return x(x)(v); }); })
    );
}

Существование комбинатор Y в JavaScript должен подразумевать, что каждая функция JavaScript имеет фиксированную точку (поскольку для каждой функции g, Y(g)и g(Y(g))должны быть равны)

Однако нетрудно найти функции без неподвижных точек, которые нарушают Y(g) = g(Y(g))(см. здесь).Даже некоторые функционалы не имеют неподвижных точек (см. здесь).

Как доказательство того, что каждая функция имеет неподвижную точку, согласуется с приведенными контрпримерами? Разве JavaScript не нетипизированное лямбда-исчисление, в котором Доказательство того, что Y(g) = g(Y(g))применимо?

8
задан Randomblue 14 June 2012 в 15:21
поделиться