मैंने हास्केल में गणितीय Vector
मॉड्यूल लिखा था।हास्केल डेटा प्रकार उपनाम नाम
तो मैं के साथ बाहर शुरू कर दिया:
data Vector a = Vector !a !a !a deriving (Eq, Show)
फाइन-यह मुझे किसी भी संख्यात्मक डेटा प्रकार मैं चाहता हूँ का उपयोग करने देता है। समस्या यह है कि मैं हर संभव कारण के लिए Double
और Vector Double
लिखना नहीं चाहता हूं। इसलिए मैं जोड़ें:
type Scalar = Double
type Vector = Vector Scalar
लेकिन निश्चित है कि दूसरी पंक्ति गलत है, के बाद से वहाँ अब Vector
के दो घोषणाओं हैं। तो मुझे इसे क्या बदलना चाहिए? मैं खुद से सोचता हूं, नहीं, मैं इसे अपने कोड पर लिखने जा रहा हूं, इसलिए मैं टाइप उपनाम को Vector
के रूप में छोड़ना चाहता हूं। जिसका अर्थ है कि मुझे डेटा प्रकार का नाम बदलना है। लेकिन अगर मैं इसे बदलता हूं, तो मुझे लगता है कि मुझे कन्स्ट्रक्टर भी बदलना चाहिए, जो सब कुछ और भ्रमित कर देता है। लेकिन अगर यह अजीब लगता है कि कन्स्ट्रक्टर के पास इस तरह के उपनाम के समान नाम है।
type Scalar = Double
type Vector = VectorT Scalar
data VectorT a = Vector !a !a !a deriving (Eq, Show)
मैं T
मनमाने ढंग से उठाया (मैं इसे "प्रकार" के लिए खड़ा है लगता है), लेकिन मैं इस बारे में इतना यकीन नहीं कर रहा हूँ:
अभी मैं इस किया है। आम तौर पर जब मैं दस्तावेज़ों को दस्तावेज करता हूं तो मैं -- Calculate the magnitude of a Vector
कहूंगा, लेकिन VectorT
के साथ मुझे लगता है कि मुझे वास्तव में का उपयोग करना चाहिए जो प्रकार का नाम है। इसलिए मैं उन्हें vectors
(पूंजीकृत नहीं) के रूप में संदर्भित करने का सहारा लेता हूं - इसके बाद मुझे लगता है कि मुझे इस सम्मेलन को प्रत्येक डेटा प्रकार के लिए प्रत्येक टिप्पणी पर लागू करना होगा।
क्या कोई भी इसी तरह की स्थिति में है? क्या कोई इस मामले में एक और अधिक सुरुचिपूर्ण समाधान के बारे में सोच सकता है?
मैंने इसे कुछ मौकों पर देखा है, विशेष रूप से 'भाषा-सी' पैकेज इस वाक्य का उपयोग अपने वाक्यविन्यास वृक्ष प्रतिनिधित्व को परिभाषित करने के लिए करता है। यदि आप थोड़ा अजीब महसूस करने से पहले कभी शैली का सामना नहीं किया है, लेकिन मुझे उम्मीद है कि लोग इसे बहुत जल्दी आदी हो जाएंगे। –
कंप्यूटर विज्ञान में केवल दो कठिन चीजें हैं: कैश अमान्यता और नामकरण चीजें। - फिल कर्ल्टन –
शायद 'वेक्टर' डबल 'यदि आप' वेक्टर टी नापसंद करते हैं। – kennytm