2011-01-14 10 views
5

यह जानने के लिए कि एक निश्चित बिंदु संयोजक क्या है और इसका उपयोग किया जाता है, मैंने अपना खुद लिखा था। लेकिन बजाय सख्ती से गुमनाम कार्यों के साथ यह लेखन, Wikipedia's example तरह की, मैं सिर्फ इस्तेमाल किया निर्धारित करें:परिभाषा में वाई कॉम्बिनेटर परिभाषित

(define combine (lambda (functional) 
        (functional (lambda args (apply (combine functional) args)))) 

मैं भाज्य और फाइबोनैचि के लिए functionals के साथ इस परीक्षण किया है, और यह काम करने लगता है। क्या यह एक निश्चित बिंदु संयोजक की औपचारिक परिभाषा को पूरा करता है?

+0

व्यायाम 2: वाई डिफिनेटर 'परिभाषित' या 'letrec' का उपयोग किए बिना :) – leppie

उत्तर

3

जवाब है, क्योंकि the blog referred to in the previous answer के अनुसार, यह भी Combinator की परिभाषा को पूरा नहीं करता है, नहीं है 'गठबंधन' के बाद से एक नि: शुल्क है चर।

+2

इसे इंगित करने के लिए धन्यवाद। बस यह सुनिश्चित करने के लिए कि ब्लॉग की परिभाषा सही है, क्या आप इसे विकिपीडिया की परिभाषा के बराबर मानते हैं: "एक संयोजक एक उच्च-आदेश फ़ंक्शन है जो केवल फ़ंक्शन एप्लिकेशन और पहले परिभाषित संयोजकों का उपयोग अपने तर्कों से परिणाम परिभाषित करने के लिए करता है।" Http://en.wikipedia.org/wiki/Combinatory_logic देखें – AlcubierreDrive

5

संपादित करें: जबकि chessweb या कोई और उसका जवाब पुष्टि करता है, अस्थायी रूप से उसका जवाब सही मानता है और यह गलत है।


ऐसा लगता है कि उत्तर हाँ है। जाहिरा तौर पर ठीक उसी Combinator here प्रकट होता है, पृष्ठ नीचे रास्ते के मध्य में:

(define Y 
    (lambda (f) 
     (f (lambda (x) ((Y f) x))))) 
+0

आपको नहीं करना चाहिए। आपको अपने सवालों के जवाब देने के लिए प्रोत्साहित किया जाता है। आईआईआरसी आप इसे देने के 2 दिनों बाद अपना जवाब स्वीकार कर सकते हैं। –

+0

@Yasir ग्रेट, धन्यवाद! – AlcubierreDrive

+1

वाई संयोजक को पढ़ाने का मुख्य बिंदु यह देखने के लिए है कि आप केवल कार्यों के साथ * पुन: प्रयास कैसे कर सकते हैं। एक पुनरावर्ती परिभाषा लिखकर, आप ऐसा करने में विफल रहते हैं - इसलिए आप काम करने वाली किसी चीज़ के साथ समाप्त होते हैं, लेकिन यह समझने में केवल उपयोगी होता है कि वाई को क्या करना है। माइक का पाठ गहराई से इसके बारे में पढ़ने के लिए एक अच्छी जगह होगी और देखें कि 'परिभाषित' कम संस्करण कैसा है। –

संबंधित मुद्दे