पर विचार करें निम्नलिखित दो प्रकार:विभिन्न नाम रिक्त स्थान में हैकेल फ़ील्ड नाम कैसे रखें?
data Point=Point{x::Float,y::Float}
data Rectangle = {upperLeft::Point, bottomRight::Point}
data Square = {upperLeft::Point, bottomRight::Point}
GHC संकलक शिकायत है कि वर्ग के साथ आयत संघर्ष में upperLeft फ़ील्ड नाम। यह अजीब लगता है कि इसके चेहरे पर प्रत्येक फ़ील्ड का नाम इस प्रकार के नामस्थान में होना चाहिए, अन्यथा कोई फ़ील्ड नामों का पुन: उपयोग नहीं कर सकता है, और मुझे संदेह है कि यह काफी आम उम्मीद होगी। इस से
let a=Rectangle{upperLeft=Point 2 3, bottomRight=Point 7 7}
let a=Square{upperLeft=Point 2 3, bottomRight=Point 7 7}
हम चाहते हैं कि हम उम्मीद करते हैं कि प्रत्येक फ़ील्ड नाम उनके संबंधित प्रकार नाम स्थान के भीतर होना चाहिए सक्षम होना चाहिए देख सकते हैं:
उदाहरण एक चर हम लिख परिभाषित करने के लिए के लिए।
क्या मेरा उपयोग सही है या मेरी अपेक्षाएं गलत हैं? क्या इसे ठीक करने के लिए कोई रास्ता है?
प्रत्येक प्रकार को अपने मॉड्यूल में रखते हुए एक ओवरकिल लगता है। मुझे एहसास हुआ कि एक्सेसर फ़ंक्शंस बनाए गए थे, लेकिन मैं उम्मीद कर रहा था कि टाइप अनुमान का उपयोग करने के लिए सही फ़ील्ड नाम का चयन होगा। –
हां, मैं मानता हूं कि इस मामले में मॉड्यूल में अलग होने से ओवरकिल लगता है। मैं शायद फ़ील्ड नामों को बदल दूंगा। 'RectUpperLeft 'की तरह कुछ' ऊपरी स्तर 'से अधिक लंबा नहीं है। मैं मानता हूं कि फील्ड नामों का पुन: उपयोग करना उपयोगी और उचित चीज़ की अपेक्षा करता है, लेकिन जहां तक मुझे पता है, आप बस हास्केल के रिकॉर्ड के साथ ऐसा नहीं कर सकते हैं। – astrieanna