मैं जीएचसीआई में निम्नलिखित करता हूं:हास्केल अस्पष्ट घटनाएं - कैसे बचें?
:m + Data.Map
let map = fromList [(1, 2)]
lookup 1 map
जीएचसीआई जानता है कि नक्शा एक (मैप इंटीजर इंटीजर) है। तो जब यह टाइप स्पष्ट है और मैं इससे बच सकता हूं तो Prelude.lookup और Data.Map.lookup के बीच एक अस्पष्टता का दावा क्यों करता है?
<interactive>:1:0:
Ambiguous occurrence `lookup'
It could refer to either `Prelude.lookup', imported from Prelude
or `Data.Map.lookup', imported from Data.Map
> :t map
map :: Map Integer Integer
> :t Prelude.lookup
Prelude.lookup :: (Eq a) => a -> [(a, b)] -> Maybe b
> :t Data.Map.lookup
Data.Map.lookup :: (Ord k) => k -> Map k a -> Maybe a
यह मैं ढूंढा, +1 जवाब की तरह है। लेकिन मेरे पास एक सवाल बाकी है। फिर, इन सभी 'डेटा' सूची ',' Data.Set' आदि के लिए "कंटेनर" टाइपक्लास क्यों नहीं है? या यदि वहां है (और यदि मैं सही ढंग से समझता हूं, तो यह 'फंक्टर' टाइपक्लास है) - फिर, कंटेनर प्रकारों के लिए अपने उदाहरणों को परिभाषित करना पुस्तकालयों में सर्वव्यापी नहीं है? – ulidtko
@ulidtko: संक्षिप्त उत्तर "क्योंकि यह तुलना में कठिन है", और लंबा जवाब एक टिप्पणी में फिट नहीं होगा। कंटेनर तत्व तत्वों पर कौन से संचालन और सीमाओं का समर्थन करते हैं, और सी में कई जटिलताओं को शामिल किया गया है। 'TypeFamilies 'एक्सटेंशन पर जानकारी देखें - कंटेनर एपीआई इसके लिए एक प्रेरक उदाहरण हैं। –
यह @ulidtko आप के लिए दिलचस्प हो सकता है: http://hackage.haskell.org/packages/archive/classy-prelude/0.4.1/doc/html/ClassyPrelude.html –