Dynamic
प्रकार के एक चर को देखते हुए, यह सही प्रकार पर कंडीशनिंग के बिना आंतरिक चर के प्रकार वर्गों का लाभ लेना संभव है? उदाहरण के लिए, मान लीजिए कि मैं एक समारोह prettyShow
लिखना चाहता हूं। यदि आंतरिक प्रकार Show
का उदाहरण है, तो हमें उस उदाहरण का उपयोग करना चाहिए; अन्यथा, हमें Dynamic
कक्षा के उदाहरण का उपयोग करना चाहिए।डेटा संयोजन। गतिशील और प्रकार वर्ग
prettyShow :: Dynamic -> String
prettyShow x = case fromDynamic x :: (forall a. Show a => Maybe a) of
Nothing -> show x
Just y -> show y
संपादित करें:: कोड में, ऐसा दिखाई दे सकता है यह इस सीधे, नहीं किया जा सकता कुछ अच्छी युक्ति है कि किया जा सकता है क्या कर रहे हैं प्रकट होता है के बाद से?
संक्षेप में, नहीं। मैं इस जानकारी के लिए उपलब्ध होने के लिए प्यार करता हूं, लेकिन कक्षा की जानकारी खो जाती है और संकलन के बाद केवल एक टाइपरेप रहता है। –
लेकिन निश्चित रूप से कहीं स्मृति में एक बड़ी मेज हो सकती है जो प्रत्येक टाइपरेप को अपने वर्ग शब्दकोशों से जोड़ती है। –
... लेकिन ऐसा नहीं है। –