चलो कहते हैं कि मैं कुछ भाषा में एक एएसटी का प्रतिनिधित्व करने के लिए एक सरल डेटा प्रकार करते हैं: (। हकीकत में यह स्पष्ट रूप से इस से भी अधिक निर्माताओं के लिए होता है)मुझे अतिरिक्त जानकारी के साथ एनएसटी का प्रतिनिधित्व कैसे करना चाहिए?
data Term = Var String
| Num Integer
| Expr [Term]
मैं इस का उपयोग कर सकते एक सरल मूल्यांकन लिखने के लिए समारोह जो एएसटी संरचना के खिलाफ मेल खाता है: बदले बिना
eval :: Term -> Result
eval (Var name) = lookup name
eval (Num n) = return n
eval (Expr exprs) = ...
मैं लाइन नंबर की तरह जानकारी के साथ एएसटी व्याख्या सकते हैं कि कैसे काम करता है मिलान पैटर्न?
(मैं पैटर्न बदल रहा है मन नहीं था, मैं, रिकॉर्ड वाक्य रचना या दृश्य पैटर्न इस्तेमाल कर सकते हैं निश्चित रूप से।)
'डेटा एटलाइन ए = एटलाइन इंट ए' जैसे कंटेनर एडीटी के बारे में क्या? –
@ निकितावोल्कोव: यही वही है जो मैं व्यूपटरर्न जैसे कुछ के साथ करूंगा। मैं बस सोच रहा हूं कि पैटर्न मिलान को बदलने से बचने का कोई अच्छा तरीका है या नहीं। –
यह पैटर्न मिलान को क्यों प्रभावित करेगा यदि यह एक 'टर्म' प्रकार है जिसे आप मेल खाते हैं? –