मैं अजगर में तो जैसे वैकल्पिक तर्क को परिभाषित करने में सक्षम होने के लिए इस्तेमाल किया है:क्या हास्केल में वैकल्पिक तर्क रखने का कोई बेहतर तरीका है?
def product(a, b=2):
return a * b
हास्केल डिफ़ॉल्ट तर्क नहीं है, लेकिन मैं एक हो सकता है का उपयोग करके कुछ इसी तरह प्राप्त करने में सक्षम था:
product a (Just b) = a * b
product a Nothing = a * 2
यदि आपके पास एकाधिक पैरामीटर से अधिक है तो यह बोझिल हो जाता है। उदाहरण के लिए, क्या मैं कुछ इस तरह करना चाहते हैं:
def multiProduct (a, b=10, c=20, d=30):
return a * b * c * d
मैं बहु उत्पाद के आठ परिभाषाएँ सभी मामलों के लिए खाते में करने के लिए होगा।
इसके बजाय, मैं इस के साथ जाने का फैसला किया:
multiProduct req1 opt1 opt2 opt3 = req1 * opt1' * opt2' * opt3'
where opt1' = if isJust opt1 then (fromJust opt1) else 10
where opt2' = if isJust opt2 then (fromJust opt2) else 20
where opt3' = if isJust opt3 then (fromJust opt3) else 30
यही मेरे लिए बहुत असजीला लग रहा है। क्या हैस्सेल में ऐसा करने का एक बेवकूफ तरीका है जो क्लीनर है?
तो कितने मापदंडों एक समारोह * वास्तव में * लगता है? ;-) –
मुझे नहीं लगता कि यह * सटीक * एक ही प्रश्न है इसलिए मैं बंद करने के लिए वोट नहीं दूंगा, लेकिन यह http://stackoverflow.com/questions/2790860/optional-arguments-in-haskell के समान ही है – MatrixFrog
@MatrixFrog यह प्रश्न फ़ंक्शंस के लिए तर्कों के बारे में है। यह सवाल डेटा प्रकारों के मूल्यों के बारे में है। –