- टाइप वे सख्त कॉन्ट्रैक्ट हैं जिनका पालन functions और data को करना चाहिए
- टाइप उन मानों का एक सेट है जिनसे कोई मान संबंधित हो सकता है
- टाइप को functions के माध्यम से बदला जा सकता है, और इससे उसका range बदल सकता है
- injective function - छोटे range वाले टाइप से बड़े range वाले टाइप में बदलना
- surjective function - बड़े range वाले टाइप से छोटे range वाले टाइप में बदलना
- bijective function - one-to-one correspondence
- लॉजिक के input और output को टाइप के रूप में व्यक्त किया जा सकता है
- इसका मतलब है कि टाइप के माध्यम से लॉजिक को abstract करना संभव है
- input और output को टाइप के रूप में व्यक्त करके, उसी के आधार पर लॉजिक डिजाइन किया जा सकता है
- बेसिक data types को नाम देकर उन्हें अलग टाइप के रूप में पहचाना जा सकता है
- टाइप सिस्टम का उपयोग करके कई समस्याओं को हल किया जा सकता है
- generics का उपयोग करके generalization
- phantom types का उपयोग करके range restriction
- union types (या sum types) का उपयोग करके behavior restriction
- minimal types का उपयोग करके TODO handling
- टाइप का उपयोग करके finite state machine लागू करना
- dependent types का उपयोग करके validation
- Type-Driven Development एक ऐसी methodology है जिसमें पहले टाइप परिभाषित किए जाते हैं और फिर उनके आधार पर code लिखा जाता है
- Type-Driven Development चाहें तो कहीं भी लागू किया जा सकता है, और इसकी शुरुआत हर प्रक्रिया के परिणाम को टाइप के रूप में परिभाषित करने से होती है
- requirements का विश्लेषण करते समय उन्हें टाइप के रूप में abstract करने की कोशिश करें
- भले ही बेसिक data type एक ही हो, अगर उसका अर्थ अलग है तो उसे अलग टाइप के रूप में परिभाषित करना बेहतर है
- requirements का विश्लेषण करके टाइप के बारे में सोच लिया है, तो लॉजिक को टाइप के रूप में abstract करने की कोशिश करें
(String) -> List<Token> जैसी भावना में abstract किया जा सकता है
- Type-Driven Development, Test-Driven Development के साथ अच्छी तरह मेल खाता है
- input और output परिणामों को पहले से परिभाषित करके code लिखने के मामले में, Type-Driven Development और Test-Driven Development एक-दूसरे से मिलते-जुलते हैं
- अगर Type-Driven Development टाइप सिस्टम का उपयोग करके compile time पर पहले से stability check कर सकता है, तो Test-Driven Development उन errors या exception cases को test code के जरिए पकड़ सकता है जिन्हें सिर्फ टाइप से नहीं पकड़ा जा सकता
- डिजाइनर के दृष्टिकोण से टाइप सिस्टम का उपयोग करना, दूसरे developers के लिए code rules बनाने जैसा है
- लेकिन अगर हर चीज़ के लिए अलग-अलग टाइप परिभाषित करने से टाइप बहुत ज़्यादा हो जाएँ या उनकी परिभाषा बहुत जटिल हो जाए, तो उल्टा code लिखना कठिन हो सकता है या readability कम हो सकती है, इसलिए हमेशा उचित संतुलन बनाए रखना महत्वपूर्ण है
2 टिप्पणियां
> Injective function वह स्थिति होती है जब बदले गए मानों का समुच्चय codomain और image से मेल नहीं खाता। इसे थोड़ा और सरल रूप में कहें तो, यह छोटे range वाले type से बड़े type में conversion को दर्शाता है.
Injective function वह function है जिसमें किसी भी दो अलग-अलग variables की image भी अलग-अलग होती है। यानी, injective function
fके domainXमें शामिल सभी elementsaऔरbके लिए, यदिa ≠ bहै, तोf(a) ≠ f(b)होता है। कोरियाई हाई स्कूल गणित में इसे 'one-to-one function' कहा जाता है.विस्तृत विवरण के लिए धन्यवाद. :) मैं इसे गलत समझ रहा था. वैसे भी यह बात मुझे कुछ बार बताई जा चुकी थी, इसलिए मैं थोड़ा और पढ़कर सामग्री को फिर से व्यवस्थित करूँगा.