क्यों नहीं है मैं एक हास्केल नौसिखिया हूं। मैं देखा है कि हास्केल रिकॉर्ड नाम से अधिक भार का समर्थन नहीं करता:हास्केल/जीएचसी समर्थन रिकॉर्ड नाम ओवरलोडिंग
-- Records.hs
data Employee = Employee
{ firstName :: String
, lastName :: String
, ssn :: String
} deriving (Show, Eq)
data Manager = Manager
{ firstName :: String
, lastName :: String
, ssn :: String
, subordinates :: [Employee]
} deriving (Show, Eq)
जब मैं इस संकलन मैं:
[1 of 1] Compiling Main (Records.hs, Records.o)
Records.hs:10:5:
Multiple declarations of `firstName'
Declared at: Records.hs:4:5
Records.hs:10:5
Records.hs:11:5:
Multiple declarations of `lastName'
Declared at: Records.hs:5:5
Records.hs:11:5
Records.hs:12:5:
Multiple declarations of `ssn'
Declared at: Records.hs:6:5
Records.hs:12:5
को देखते हुए हास्केल प्रकार प्रणाली की "शक्ति", ऐसा लगता है जैसे कि यह होना चाहिए संकलक के लिए यह निर्धारित करने के लिए कि
emp = Employee "Joe" "Smith" "111-22-3333"
man = Manager "Mary" "Jones" "333-22-1111" [emp]
firstName man
firstName emp
क्या कोई समस्या है जिसे मैं नहीं देख रहा हूं। मुझे पता है कि हास्केल रिपोर्ट इसकी अनुमति नहीं देती है, लेकिन क्यों नहीं?
यह आपके प्रश्न का उत्तर नहीं है, लेकिन जब भी आपकी जैसी स्थिति उत्पन्न होती है तो मैं डेटा प्रकारों को अलग-अलग मॉड्यूल में विभाजित करता हूं। उदाहरण के लिए, मैं 'कर्मचारी' मॉड्यूल और 'प्रबंधक' मॉड्यूल बना सकता हूं, और उन्हें क्रमशः 'ई' और' एम' के रूप में योग्यता आयात कर सकता हूं, और फिर 'ई। फर्स्टनाम', 'एम। फर्स्टनाम' आदि का उपयोग कर सकता हूं। यह मुझे उचित रूप से अच्छा वाक्यविन्यास देता है। (मैं यह नहीं कह रहा हूं कि यह एक अच्छा विचार है, लेकिन यह वही है जो मैंने कर लिया है और यह मेरे मामलों में अच्छी तरह से निकला है)। – gspr
हाँ, लेकिन यह एक अन्यथा सुरुचिपूर्ण भाषा में "क्लेज" जैसा लगता है। – Ralph