में अनफॉल्ड टुपल क्या फ़ंक्शन तर्क के रूप में सदस्यों को टुप करने के लिए फ़ंक्शन लागू करने का कोई तरीका है? या यदि नहीं, तो क्या मैं किसी भी तरह मनमानी संख्याओं के साथ एक समारोह बना सकता हूं और उसके शरीर में "पूंछ" में कुछ और कार्य लागू कर सकता है क्योंकि यह इसके तर्क होगा?OCaml
OCaml
उत्तर
सामान्य मामले में, नहीं। 2 तर्कों के मामले में, आप Batteries extensions to Pervasives में curry
और uncurry
फ़ंक्शंस का उपयोग कर सकते हैं।
यह Obj
मॉड्यूल के साथ कुछ पकाने के लिए, की तरह printf
के आंतरिक करना संभव हो सकता है, लेकिन मैं अब तक दूर है कि से दूर रहना होगा। कठिनाई यह है कि टाइप सिस्टम आपको सामान्यीकृत curry
या uncurry
फ़ंक्शन के प्रकार को व्यक्त करने का कोई तरीका नहीं देता है। टाइप सिस्टम आपको टुपल की लंबाई से "गणना" नहीं करने देता है - 2-टुपल 2-टुपल है और आपके पास (a*b*c)
व्यक्त करने का कोई तरीका नहीं है, वास्तव में (a*b)
अतिरिक्त घटक के साथ है। printf
को प्रकारों को ठीक तरह से काम करने के लिए कंपाइलर से विशेष समर्थन है, और इसके परिणामस्वरूप फ़ंक्शन प्रकार स्वरूप प्रकार का हिस्सा होता है (इसलिए समान समाधान टुपल्स के लिए काम नहीं करेंगे)।
भाषा स्वयं आपको मनमानी आकार के tuples पर एक फ़ंक्शन को परिभाषित करने की अनुमति नहीं देती है।
हालांकि this folding technique का पालन करके तर्कों की मनमानी संख्या के साथ कार्यों को परिभाषित करना संभव है (यह एसएमएल के लिए वर्णित है लेकिन ओकैमल में समान रूप से अच्छी तरह से काम करता है)।