संपादित acc ""
की जगह सकता है: इस continuation-passing style के रूप में जाना जाता है। प्रत्येक रिकर्सिव कॉल अपने निरंतरता समारोह को बनाता है और इसे अगले रिकर्सिव कॉल के साथ पास करता है, जिसे कॉल चुनने के रूप में उपयोग किया जाता है (यह आधार आधार है या नहीं)।
बस कमी चरणों लिख:
repeat_cont 4 "xo" id
repeat_cont 3 "xo" k1 where k1 x = id ("xo" + x)
repeat_cont 2 "xo" k2 where k2 x = k1 ("xo" + x)
repeat_cont 1 "xo" k3 where k3 x = k2 ("xo" + x)
repeat_cont 0 "xo" k4 where k4 x = k3 ("xo" + x)
k4 ""
k3 ("xo" + "")
k2 ("xo" + ("xo" + ""))
k1 ("xo" + ("xo" + ("xo" + "")))
id ("xo" + ("xo" + ("xo" + ("xo" + ""))))
"xoxoxoxo"
प्रत्येक निरंतरता समारोह ki
कि "नतीजा यह है कि पुनरावर्ती कॉल से प्राप्त हो जाएगा के साथ क्या करना है"।
पुनरावर्ती मामले हैं, ki
, कहते हैं कि "जो कुछ भी पुनरावर्ती परिणाम x
मैं दिया हूँ, आगे जोड़ते इसे करने के लिए s
और बढ़े स्ट्रिंग नए, संशोधित परिणाम के रूप में श्रृंखला को पारित"।
बाहरीतम, id
, बस कहता है "" अंतिम (परिणाम) परिणाम लौटाएं "।
जब 0
का आधार मामला पहुंच गया है, k4
निरंतरता समारोह बनाया गया है और यह अपना काम करने के लिए इसके तर्क प्राप्त करने के लिए तैयार है। यह "xo"
स्ट्रिंग को इसके तर्क में जोड़ देगा, और k3
पर निरंतरता कार्यों की श्रृंखला के साथ परिणाम पास करेगा। तर्क का उपयोग "xo" + x
में किया जाएगा, इसलिए यह एक स्ट्रिंग होना चाहिए।
""
एक स्ट्रिंग में जोड़ना एक पहचान ऑपरेशन है, इसलिए मूल मामला कहता है, "निरंतर कार्य की श्रृंखला को मेरे काम से आगे बढ़ने दें, बिना किसी हस्तक्षेप के।"
एनबी: first-class continuations के साथ भ्रम से बचने के लिए मैं हमेशा "निरंतरता समारोह" कहने के लिए सतर्क हूं, जो पूरी तरह से अलग और अधिक शक्तिशाली जानवर हैं (सुनिश्चित नहीं है कि एफ # में उन्हें है)।
स्रोत
2017-05-21 11:41:37
शायद 'res1 "ab" '=>' "xoxoxoxoab" ', i.e.' res1' एक स्ट्रिंग * उपसर्ग * का प्रतिनिधित्व करता है, फिर से: [टैग: अंतर-सूचियां]। आप इसे इंक के लिए दिखाते हैं। तो 'res2 = (4 +)' और 'res1 = (" xoxoxoxo "+)'। अच्छा लगा। –
'संचयक में आपके द्वारा बनाई गई संरचना एक कार्य है' Ooooooohhhh ... देखो, अब मैं सिर्फ पूछने के लिए बेवकूफ महसूस करता हूं। अब सही समझ में आता है। बहुत अच्छी तरह से समझाया! –
@WillNess: निश्चित रूप से, क्यों नहीं। – scrwtp