जो अधिक गणितीय तरीका लगता है
कार्यात्मक भाषाएं लैम्ब्डा कैलकुलस से प्रेरित हैं । इस क्षेत्र में, कोष्ठक का उपयोग फ़ंक्शन अनुप्रयोग के लिए नहीं किया जाता है।
मुझे यह भी लगता है कि बाद की शैली बहुत अधिक स्पष्ट और पठनीय है, बिना परनों के।
देखने वाले की नजर में पठनीयता होती है। आपको इसे पढ़ने की आदत नहीं है। यह गणितीय ऑपरेटरों की तरह एक सा है। यदि आप सहानुभूति को समझते हैं, तो आपको अपनी अभिव्यक्ति की संरचना को स्पष्ट करने के लिए केवल कुछ परिदों की आवश्यकता है। अक्सर आपको उनकी आवश्यकता नहीं होती है
इस सम्मेलन का उपयोग करने के लिए करी भी एक अच्छा कारण है। हैस्केल में, आप निम्नलिखित को परिभाषित कर सकते हैं:
add :: Int -> Int -> Int
add x y = x + y
x = add 5 6 -- x == 11
f = add 5
y = f 6 -- y == 11
z = ((add 5) 6) -- explicit parentheses; z == 11
Parens के साथ, आप दो सम्मेलन का उपयोग कर सकते हैं: f(5, 6)
(करी नहीं) या f(5)(6)
(करी)। हैक्सेल सिंटेक्स क्यूरिंग अवधारणा के लिए उपयोग करने में मदद करता है। आप अभी भी एक गैर-करी संस्करण का उपयोग कर सकते हैं, लेकिन कॉम्बिनेटर के साथ इसका उपयोग करना अधिक दर्दनाक है
add' :: (Int, Int) -> Int
add' (x, y) = x + y
u = add'(5, 6) -- just like other languages
l = [1, 2, 3]
l1 = map (add 5) l -- [6, 7, 8]
l2 = map (\x -> add'(5, x)) l -- like other languages
ध्यान दें कि दूसरा संस्करण आपको एक चर के रूप में x को पंजीकृत करने के लिए कैसे मजबूर करता है, और यह कि उपप्रकार एक फ़ंक्शन है जो पूर्णांक लेता है और इसमें 5 जोड़ता है? करी संस्करण बहुत हल्का है, लेकिन बहुत से पठनीय माना जाता है।
हास्केल कार्यक्रम आंशिक अनुप्रयोग और कॉम्बिनेटरों के व्यापक उपयोग को सार को परिभाषित करने और रचना करने के लिए बनाता है, इसलिए यह एक खिलौना उदाहरण नहीं है। एक अच्छा फ़ंक्शन इंटरफ़ेस वह होगा जहां मापदंडों का क्रम एक अनुकूल करी उपयोग प्रदान करता है।
एक और बिंदु: मापदंडों के बिना एक फ़ंक्शन के साथ बुलाया जाना चाहिए f()
। हैस्केल में, चूंकि आप केवल अपरिवर्तनीय आलसी मूल्यांकन किए गए मानों में हेरफेर करते हैं, इसलिए आप f
इसे लिखते हैं , और इसे एक मूल्य के रूप में मानते हैं, जिसे जरूरत पड़ने पर कुछ संगणना करने की आवश्यकता होगी। चूँकि इसके मूल्यांकन का कोई दुष्प्रभाव नहीं होगा, इसलिए इसका कोई मतलब नहीं है कि पैरामीटरलेस फंक्शन और इसकी लौटी वैल्यू के लिए अलग-अलग नोटेशन है।
फ़ंक्शन अनुप्रयोग के लिए अन्य कन्वेंशन भी हैं:
- लिस्प: (एफएक्स) - बाहरी कोष्ठक के साथ उपसर्ग
- फोर्थ: xf - पोस्टफिक्स