मैं यह सब समझने का दावा नहीं करता, लेकिन अगर यह किसी की मदद करता है ... तो yippee।
की परिभाषा पर विचार करें fix
। fix f = let x = f x in x
। दिमाग़ी हिस्सा वह x
है जिसे परिभाषित किया जाता है f x
। लेकिन एक मिनट के लिए इसके बारे में सोचो।
x = f x
चूंकि x = fx, तो हम x
उस के दाहिने हाथ की तरफ के मूल्य को प्रतिस्थापित कर सकते हैं , है ना? तो इसलिए...
x = f . f $ x
x = f . f . f $ x
x = f . f . f . f . f . f . f . f . f . f . f $ x
तो चाल है, समाप्त करने के लिए, f
किसी प्रकार की संरचना उत्पन्न करना है, ताकि बाद में f
पैटर्न उस संरचना से मेल खा सके और पुनरावर्तन को समाप्त कर सके, वास्तव में अपने पैरामीटर (?) के पूर्ण "मूल्य" की परवाह किए बिना?
जब तक, निश्चित रूप से, आप एक अनंत सूची बनाने जैसा कुछ करना चाहते हैं, जैसा कि ल्यूकी सचित्र है।
टॉमएमडी की तथ्यात्मक व्याख्या अच्छी है। फिक्स का प्रकार हस्ताक्षर है (a -> a) -> a
। दूसरे शब्दों में, के लिए प्रकार हस्ताक्षर (\recurse d -> if d > 0 then d * (recurse (d-1)) else 1)
है । तो हम ऐसा कह सकते हैं । इस तरह, फिक्स हमारे फ़ंक्शन को लेता है, जो कि , या वास्तव में है , और दूसरे शब्दों में , दूसरे शब्दों में, दूसरे फ़ंक्शन में टाइप का परिणाम देगा !(b -> b) -> b -> b
(b -> b) -> (b -> b)
a = (b -> b)
a -> a
(b -> b) -> (b -> b)
a
b -> b
रुको, मैंने सोचा कि यह एक निश्चित बिंदु पर लौटना चाहिए था ... एक फ़ंक्शन नहीं। ठीक है, यह कार्य करता है (चूंकि फ़ंक्शन डेटा हैं)। आप कल्पना कर सकते हैं कि इसने हमें एक तथ्य खोजने के लिए निश्चित कार्य दिया। हमने इसे एक फ़ंक्शन दिया है जो यह नहीं जानता है कि कैसे पुनरावृत्ति करना है (इसलिए इसका एक पैरामीटर पुनरावृत्ति के लिए उपयोग किया जाने वाला एक फ़ंक्शन है), और fix
इसे पुनरावृत्ति करने का तरीका सिखाया।
याद रखें कि मैंने कैसे कहा कि f
किसी प्रकार की संरचना तैयार करनी है ताकि बाद में f
पैटर्न मैच और समाप्त हो सके? खैर, यह बिल्कुल सही नहीं है, मुझे लगता है। टॉमएमडी ने उदाहरण दिया कि कैसे हम x
फ़ंक्शन को लागू करने और आधार मामले की ओर कदम बढ़ा सकते हैं। अपने कार्य के लिए, यदि वह एक / / का उपयोग करता है, और यही समाप्ति का कारण बनता है। बार-बार प्रतिस्थापन के बाद, अंततः in
की पूरी परिभाषा के हिस्से को इसके fix
संदर्भ में परिभाषित किया जाना बंद हो जाता है x
और यह तब होता है जब यह गणना योग्य और पूर्ण होता है।
fix error
ghci में टाइप कर सकते हैं और अपने बारे में अच्छा महसूस कर सकते हैं ।"