एफ # में एक वाई कॉम्बिनेटर की परिभाषा है
let rec y f x = f (y f) x
च के पहले तर्क के रूप में पुनरावर्ती उपप्रकारों के लिए कुछ निरंतरता होने की उम्मीद है। एक निरंतरता के रूप में yf का उपयोग करते हुए, हम देखते हैं कि च को लगातार कॉल पर लागू किया जाएगा जैसा कि हम विकसित कर सकते हैं
let y f x = f (y f) x = f (f (y f)) x = f (f (f (y f))) x etc...
समस्या यह है कि, एक प्राथमिकता, यह योजना किसी भी पूंछ कॉल अनुकूलन का उपयोग करती है: वास्तव में, एफ में लंबित कुछ ऑपरेशन हो सकता है, जिस स्थिति में हम एफ से जुड़े स्थानीय स्टैक फ्रेम को केवल म्यूट नहीं कर सकते हैं।
इसलिए :
- एक छोर पर, वाई कॉम्बिनेटर के उपयोग से फ़ंक्शन की तुलना में एक स्पष्ट अलग निरंतरता की आवश्यकता होती है।
- टीसीओ लागू करने के लिए, हम चाहेंगे कि कोई भी कार्यवाही च में लंबित न हो और केवल स्वयं को कॉल करें।
क्या आप किसी भी तरह से जानते हैं कि उन दोनों में सामंजस्य स्थापित किया जा सकता है? संचायक चाल के साथ Y की तरह, या CPS चाल के साथ Y? या एक तर्क यह साबित करता है कि ऐसा कोई तरीका नहीं है?
f
। हम देख सकते हैं कि एक y
थंक f
से पूंछ सकता है (y f)
, लेकिन जैसा कि आप कहते हैं कि f
कुछ लंबित ऑपरेशन हो सकता है। मुझे लगता है कि यह जानना दिलचस्प होगा कि क्या एक अलग कॉम्बीनेटर है जो अधिक टेल्कम फ्रेंडली है। मुझे आश्चर्य है कि अगर इस सवाल पर सीएस स्टैकएक्सचेंज साइट पर बेहतर ध्यान दिया जाएगा?