में शो का एक उदाहरण टाइप करना मैं निम्नलिखित डेटा प्रकार Show
का एक उदाहरण बनाने की जरूरत है:एक डेटा हास्केल
data Tree a b = Branch b (Tree a b) (Tree a b) | Leaf a
मैं काफी इस पर नया हूँ, लेकिन साथ शुरू करने के लिए, मैं इस घोषणा में व्याख्या की
"हमने ट्री नामक एक नया प्रकार बनाया है, जिसे प्रकार ए और बी के साथ पैरामीटर किया गया है। एक पेड़ दो चीजों में से एक हो सकता है: एक शाखा जिसमें प्रकार बी के डेटा का एक टुकड़ा होता है, साथ ही दो और पेड़, या एक पत्ता जिसमें एक प्रकार का डेटा आइटम होता है। "
अब, मुझे deriving
का उपयोग किये बिना, इसे अच्छी तरह से (नेस्टेड शाखाएं, आदि) "दिखाने" का एक तरीका बनाने की आवश्यकता है। अब तक, मैं केवल एक मॉड्यूल में कार्यों को लिख रहा हूं और एक दुभाषिया खिड़की में उनके साथ लोड/खेल रहा हूं, इसलिए मैंने वास्तव में कन्स्ट्रक्टर आदि के साथ चीजें नहीं की हैं। फिर भी, मुझे लगा कि मैं अपनी फाइल के भीतर पेड़ डेटा प्रकार की घोषणा करके बस शुरू कर सकता हूं, जैसा कि प्रश्न की शुरुआत में दिखाया गया है, और वहां से जाना है।
जैसा कि मैंने ज्यादा सफलता के बिना के साथ "शो" चारों ओर गड़बड़ है, मैं शायद सोचा था कि मैं पेड़ की एक छोटी घटक और कैसे परिभाषित करने के लिए की जरूरत है "दिखाएँ" यह पहली बार पूरे वृक्ष के साथ काम करने की कोशिश कर रहा से पहले:
data Leaf a = Leaf a
instance Show (Leaf a) where
show (Leaf a) = ???
मैंने कई चीजों की कोशिश की ??? स्थान, जैसे कि "एक" के रूप में, बस एक अपने आप में, putStrLn, आदि, लेकिन कोई भी बाहर एक का मूल्य मुद्रण जब मैं कहता हूँ
>show (Leaf 3)
वास्तव में की तरह कुछ है, मैं कई मामलों में इस का सामना करना पड़ा है कर रहे हैं, जो शायद मतलब है मैं चीजों को सही पता लगाने नहीं हूं:
Ambiguous occurrence `show'
It could refer to either `Main.show', defined at a2.hs:125:1
or `Prelude.show',
imported from `Prelude' at a2.hs:2:8-11
(and originally defined in `GHC.Show')
... जो मैं "Main.show," जो निश्चित रूप से काम नहीं करता है फोन करके संबोधित किया।
मुझे लगता है कि सवाल यह है कि, मैं यह सब कहां से जाऊं ... या शायद बस, "मैं पत्ता कैसे ठीक कर सकता हूं" दिखाएं "उपयोगिता ताकि मैं इसे विस्तारित कर सकूं?" (मान लीजिए कि मुझे इसे पहले परिभाषित करना है ...)