functional programming - Get the subtrees of an ast -


मेरे पास एक बूलीयन सार वाक्यविन्यास वृक्ष है

  type bast = true | झूठी | स्वाद नहीं | या बास्ट * बस्ट | और बस्ट * बस्ट का  

और मैं इसे एक फ़ंक्शन पर आवेदन करना चाहता हूं और सभी उपशीर्षक प्राप्त करना चाहता हूं जो इस फ़ंक्शन के लिए सही हो।

मेरी कोशिश:

<पूर्व> चलो खोजी च (ast: bast) = आरईसी खोजने वाले (पेड़: बास्ट) (मेरीलिस्ट: बास्ट सूची) = मैच ट्री के साथ | सत्य - & gt; अगर (च वृक्ष) = सच तो मेरी सूची @ [पेड़] और [] | झूठी - & gt; अगर (च वृक्ष) = सच तो मेरी सूची @ [पेड़] और [] | ई नहीं - & gt; नहीं (खोजता ई उप-धन) | और (ई 1, ई 2) - & gt; और (सर्चिट्री ई 1 मेरीलिस्ट, सर्चिट्री ई 2 मेरीलिस्ट) | या (ई 1, ई 2) - & gt; Findtree ast []

में मुझे एक त्रुटि मिलती है:

त्रुटि: प्रकार प्रकार सूची में कोई कन्स्ट्रक्टर नहीं है नहीं

इस के साथ भी प्रयास किया:

  चलो ढूँढ़ने वाला च (ast: bast) = आरईसी खोजने वाले (पेड़: बास्ट) (मेरीलिस्ट: बोस्ट सूची) = मैच पेड़ के साथ (True | False) - & gt; मेरीलिस्ट | सबट्री - & gt; अगर (एफ सबट्री) = सच तो मेरीलिस्ट @ [सबट्री] और सीट्री_ट्री उपशीर्षक mylist की खोज में मिले []  

ठीक संकलित करता है लेकिन कभी भी समाप्त नहीं होता!

सबसे पहले, यह संकलित नहीं होना चाहिए, क्योंकि Bast को कम किया जाना चाहिए।

इसका कारण यह है कि आप पहले दो मामलों पर टाइप की एक मान सूची लौटाते हैं, और बाद के तीनों पर एक परमाणु इसके अलावा, (संकलक ने अभी तक इसका उल्लेख नहीं किया है, लेकिन जल्द ही) नहीं निर्माता एक bast को स्वीकार करता है, लेकिन आप इसे एक bast list


Comments