नहीं है Wikipedia article on the Y combinator Y Combinator के निम्नलिखित जावास्क्रिप्ट कार्यान्वयन प्रदान करता है:Y Combinator: कुछ कार्य नियत बिन्दु
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 Combinator के अस्तित्व का मतलब यह चाहिए कि हर JavaScript फ़ंक्शन एक नियत बिन्दु है (चूंकि प्रत्येक फ़ंक्शन g
, Y(g)
और g(Y(g))
बराबर होना चाहिए)।
हालांकि, Y(g) = g(Y(g))
का उल्लंघन करने वाले फिक्स्ड पॉइंट्स के बिना फ़ंक्शंस के साथ आना मुश्किल नहीं है (here देखें)। यहां तक कि कुछ फ़ंक्शंस में निश्चित बिंदु नहीं होते हैं (here देखें)।
सबूत कैसे है कि प्रत्येक कार्य में एक निश्चित बिंदु है जो दिए गए काउंटर-उदाहरणों के साथ मेल खाता है? क्या जावास्क्रिप्ट एक untyped lambda कैलकुलस नहीं है जिसमें सबूत है कि Y(g) = g(Y(g))
लागू होता है?
मैं आपका अंतिम पैराग्राफ संशोधित करूंगा। सिर्फ इसलिए | डी^डी | > | डी | एक सेट सैद्धांतिक अर्थ में इसका मतलब यह नहीं है कि लैम्ब्डा कैलकुस में कोई मॉडल नहीं है। Http://mathoverflow.net/questions/16752/scott-on-the-consistency-of-the-lambda-calculus देखें –