2013-10-04 7 views
8

चलो कहते हैं कि हम इस बात से मुक्त समारोह करते हैं? आईई। मुझे पता है कि नक्शा, कॉन्स और फ्लिप फ़ंक्शंस क्या हैं। लेकिन उन्हें इस तरह एक साथ रखना सिर्फ मुझे समझ में नहीं आता है। इस समारोह के अंदर वास्तव में क्या हो रहा है? ऐसा लगता है कि मैं हर बार उसमें वापस लौटता हूं लेकिन ... क्यों?एफ 1 = फ्लिप कॉन्स मैप। यह फ़ंक्शन कैसे काम करता है?</p> <pre><code>f1 = flip const map </code></pre> <p>मैं वास्तव में यह कैसे काम करता है और क्या यह करने के लिए माना जाता है के बारे में पता कर रहा हूँ:

उत्तर

5

ध्यान रखें कि हास्केल में सभी फ़ंक्शंस केवल एक तर्क लेते हैं लेकिन एक और फ़ंक्शन लौटकर कई तर्क लेते हैं। तो flip const map को भी (flip const) map के रूप में लिखा जा सकता है। const आमतौर पर अपने दूसरे तर्क को अनदेखा करता है और इसका पहला तर्क देता है। flip तर्कों के क्रम को उलट देता है, इसलिए flip const पहले तर्क को अनदेखा करता है और दूसरा तर्क देता है। तो map अनदेखा हो जाता है और एक फ़ंक्शन वापस कर दिया जाता है जो हमेशा इसकी तर्क देता है।

4

इससे कोई फर्क नहीं पड़ता कि आप वहां map से कुछ और डालते हैं। अभिव्यक्ति flip constconst के तर्कों को फ़्लिप करती है, इसलिए हमेशा अपना पहला तर्क लौटने की बजाय, यह अपना दूसरा लौटा देता है। आप f1 = flip const undefined को फिर से परिभाषित करके इसका परीक्षण कर सकते हैं। अगर undefined का मूल्यांकन कभी किया जाता है तो इसका अपवाद होगा, लेकिन आप देख सकते हैं कि यह वही व्यवहार देता है। अनिवार्य रूप से, flip const undefined = id

14

बिट

flip const map x = (flip const) map x 
       = const x map 
       = x 

यही कारण है कि यह हमेशा रिटर्न क्या आप इसे देना है द्वारा देखते हैं कि यह समारोह क्या करता है, थोड़ा!

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