उदाहरणों के आयात को नियंत्रित करने में असमर्थता व्यापार गत हास्केल typeclass प्रणाली बनाता है में से एक है। यहां एक काल्पनिक हास्केल बोली में एक उदाहरण है जहाँ आप कर सकते हैं:
Foo.hs:
module Foo where
data Foo = FooA | FooB deriving (Eq, Ord)
Bar.hs:
module Bar (myMap) where
import Data.Map (Map)
import qualified Data.Map as Map
import Foo
myMap :: Map Foo Int
myMap = Map.singleton FooA 42
Baz.hs:
module Baz where
import Data.Map (Map)
import qualified Data.Map as Map
import Foo hiding (instance Ord Foo)
import Bar (myMap)
instance Ord Foo where
FooA > FooB = True
FooB > FooA = False
ouch :: Map Foo Int
ouch = Map.insert FooB 42 myMap
यिक्स! सेट myMap
उचित instance Ord Foo
साथ बनाया गया था, लेकिन यह एक अलग, विरोधाभासी उदाहरण के साथ बनाए गए नक्शे के साथ संयुक्त किया जा रहा है।
ऐसा करने में सक्षम होने से होस्केल के खुली दुनिया धारणा का उल्लंघन होगा। दुर्भाग्य से, मुझे इसके बारे में सीखने के लिए एक अच्छा, केंद्रीकृत संसाधन नहीं पता है। यह section of RWH सहायक हो सकता है (मैंने "हैकेल खुली दुनिया धारणा" की खोज की)।
मानचित्र, सेट नहीं। अच्छा उदाहरण, +1। –
@DanielFischer: फिक्स्ड, धन्यवाद :) – ehird
अर्थ है कि यदि उस मार्ग से जाने के लिए चाहते हैं, आप, उदाहरणों प्रथम श्रेणी बनाने के लिए इतना है कि एक मानचित्र इसके चारों ओर Ord शब्दकोश है ले जा सकता है के लिए होता है? –