2012-07-03 15 views
5

(int * int) -> int के विपरीत प्लस (+) का प्रकार int -> int -> int क्यों माना जाता है? मेरे लिए, दूसरा समझ में आता है क्योंकि यह 2-टुपल (जोड़ों) को स्वीकार करता है और एक int (उनकी राशि) देता है।प्लस ऑपरेटर का ओकैमल प्रकार

धन्यवाद!

उत्तर

11

आप एक भाषा बना सकते हैं जहां (+) प्रकार (int * int) -> int है। वास्तव में, एसएमएल इस तरह से काम करता है। यह सिर्फ इंफिक्स ऑपरेटरों के अर्थ को प्रभावित करता है। हालांकि ओकैमल सम्मेलन अनिश्चित लोगों के बजाय करीबी कार्यों (a -> b -> c प्रकार) के उपयोग का दृढ़ता से समर्थन करते हैं। एक अच्छा परिणाम यह है कि आप आंशिक रूप से उन्हें लागू कर सकते हैं। उदाहरण के लिए ((+) 7) प्रकार int -> int का अर्थपूर्ण अभिव्यक्ति है। मुझे यह नोटेशन अक्सर उपयोगी लगता है।

+1

क्या आप समझा सकते हैं ((+) 7) प्रकार int-> int है? यह मुझे भ्रमित कर रहा है। यह int से int तक कैसे जाता है? –

+1

संक्षिप्त उत्तर यह है कि यह एक ऐसा फ़ंक्शन है जो आप जो कुछ भी देते हैं उसे 7 जोड़ता है। यह 'मजेदार एक्स -> एक्स + 7' के बराबर है। लंबे उत्तर के लिए, यदि आप चाहें तो मैं ऊपर दिए गए मेरे उत्तर को संपादित कर सकता हूं। –

+0

@ जेफरीस्कोफिल्ड: अच्छी तरह से, तकनीकी रूप से, यह 'मजेदार एक्स -> 7 + एक्स' के बराबर है, लेकिन यहां यह वही बात है – newacct

2

यह थोड़ा असहनीय प्रतीत हो सकता है, लेकिन ऐसा इसलिए है क्योंकि फ़ंक्शन दो तर्क लेता है।

जब कोई फ़ंक्शन टुपल लेता है, तो यह वास्तव में एक तर्क ले रहा है।

क्योंकि (+) एक इनलाइन फ़ंक्शन है, एक तर्क लेना उपयोगी नहीं होगा, क्योंकि यह + (1,2) जैसा 1 + 2 के विपरीत होगा।

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