अध्याय 3 एक द्विआधारी पेड़ का प्रतिनिधित्व करने के लिए निम्न पुनरावर्ती प्रकार परिभाषित करता है:असली दुनिया हास्केल अध्याय 3 अभ्यास: के साथ बाइनरी ट्री 1 मूल्य निर्माता
data Tree a = Node a (Tree a) (Tree a)
| Empty
deriving (Show)
व्यायाम मैं एक ही मूल्य निर्माता का उपयोग कर एक ही प्रकार लागू की आवश्यकता है, खाली की
(अध्याय 3 व्यायाम 2 पेज 60 पर से) "एक पेड़ प्रकार हमारे जावा उदाहरण की तरह केवल एक निर्माता है, को परिभाषित करने के बजाय:" शायद "प्रकार का उपयोग बच्चे नोड्स का उल्लेख करने के। कन्स्ट्रक्टर, शायद प्रकार के रेफरी का उपयोग करें एक नोड के बच्चों के लिए आर। "
data AltTree a = AltNode a (Maybe (AltTree a)) (Maybe (AltTree a))
deriving (Show)
बहरहाल, यह एक पेड़ जैसे अन्य खाली पेड़, शामिल करने के लिए अनुमति नहीं देता::
समाधान मैं के साथ आया था निम्नलिखित है
AltNode 1 (AltNode 2 Nothing Nothing) (AltNode 3 Nothing Nothing)
और मैं नहीं कर रहा हूँ निश्चित रूप से, "शायद" प्रकार के लिए "कुछ नहीं" मूल्य कन्स्ट्रक्टर क्यों नहीं है?
ऑनलाइन: [आरडब्ल्यूएच> अध्याय 3> व्यायाम] (http://book.realworldhaskell.org/read/defining-types-streamlining-functions.html#id585938) –