मैं निम्नलिखित typeclass उपयोग कर रहा हूँ:हास्केल को दो मॉड्यूल से एक ही उदाहरण आयात करने के लिए कैसे बताना है?
module T where
class T a where
v :: a
T Int
का एक उदाहरण है कि मैं कार्यान्वित:
import T
import A (av)
instance T Int where
v = 0
main = putStrLn (av ++ show v)
और एक मॉड्यूल है कि मैं जो भी का एक उदाहरण है से एक मूल्य, उपयोग करना चाहते हैं T Int
।
module A where
import T
instance T Int where
v = 0
av = "value from A"
समस्या यह काम नहीं करता है:
$ runghc Main.hs
Main.hs:4:9:
Duplicate instance declarations:
instance T Int -- Defined at Main.hs:4:9-13
instance T Int -- Defined at A.hs:3:9-13
हास्केल शिकायत एक ही उदाहरण के लिए 2 घोषणाओं देखते हैं कि। मैं उसे कैसे बता सकता हूं कि B
से उदाहरण आयात करने के लिए, या दोनों उदाहरणों को एकजुट करने के लिए, या केवल Main
से उदाहरण का उपयोग करने के लिए?
ऐसा मत करो। उचित समाधान केवल एक ही स्थान पर उदाहरण घोषित करना है। – hammar
@hammar: मैंने 'टी' या' बी' नहीं लिखा था, लेकिन मैं 'बी' से एक मान का उपयोग करना चाहता हूं, और मैं' टी' का उदाहरण बनाना चाहता हूं। – Dog
आह, यह इसे कठिन बना देता है। उस स्थिति में, आप मौजूदा प्रकार को लपेटने के लिए 'न्यूटाइप' बना सकते हैं और इसके बजाय 'newtype' के लिए अपना उदाहरण लिख सकते हैं। – hammar