मुझे समझ में आता है कि नए role system and annotations को टाइप (और डेटा) परिवार पैरामीटर की भूमिका nominal
पर क्यों आवश्यकता है।नाममात्र प्रकार की भूमिकाएं और डेटा परिवार
तो मैं उम्मीद जब मैं
data family CoordinateRepresentation ty a :: *
ने घोषणा की कि ty
और a
nominal
भूमिकाओं मिलेगा। (मेरा वास्तविक उदाहरण एक संबंधित डेटा परिवार है, लेकिन चूंकि मुझे नहीं लगता कि यह कुछ भी बदलता है, मैं उसके साथ आने वाले अतिरिक्त शोर को छोड़ रहा हूं।)
मुझे उम्मीद नहीं थी कि जब मैंने इसे
में बदल दियाdata family CoordinateRepresentation ty :: * -> *
यह है कि अनामित दूसरे प्रकार के तर्क को अभी भी nominal
भूमिका मिलती है।
यह क्यों है? क्या यह representational
भूमिका सुरक्षित रूप से प्राप्त नहीं कर सका, क्योंकि data instance CoordinateRepresentation ... = ...
को कोई नया कन्स्ट्रक्टर नहीं बनाना है? उस कन्स्ट्रक्टर को nominal
भूमिका पर अपने पैरामीटर का उपयोग करने का अवसर कैसे मिल सकता है जिस तरह संकलक नहीं देख सकता है? भले ही यह एक खुली प्रणाली है और अलग संकलन है, फिर भी मुझे यह नहीं मिला है।
आह, मैं देखता हूं। मुझे उम्मीद थी कि दूसरा वाक्यविन्यास टाइप परिवार के "पैटर्न मिलान" भाग को पहले तर्क में सीमित करेगा और इसके परिणामस्वरूप '* -> *' को कुछ सामान्य "सामान्य" में होना चाहिए, लेकिन ऐसा नहीं है। –