behaviour of unification in prolog in presence of arithmetic operators -


  12 - 3 + 4 * 5 = X + Y एक्स = 3, वाई = 4 * 5 13? -3 + 4 * 5 = एक्स * वाई असत्य। 16? - 3 * 4 + 5 = एक्स * वाई असत्य।   

मैं उम्मीद कर रहा था

  13? -3 + 4 * 5 = X * Y एक्स = 3 + 4, वाई = 5. 16? - 3 * 4 + 5 = एक्स * वाई एक्स = 3, वाई = 4 + 5   

क्या कुछ "प्राथमिकता" समस्या है? मैं अंतिम स्व-प्रोल रिले का उपयोग कर रहा हूं।

हां, एक प्राथमिकता मुद्दा है जो आपको चाहिए ध्यान में रखना।

Prolog प्रत्येक ऑपरेटर के लिए एक संख्यात्मक प्राथमिकता मान को परिभाषित करता है, ताकि उसका पार्स स्वचालित रूप से इलाज कर सकता है, जैसे, 3 + 4 * 5 उसी तरह के रूप में यदि कोष्ठक का इस्तेमाल 3+ राज्य के लिए किया गया था (4 * 5)।

तो आपका पहला उदाहरण अपेक्षित काम करता है, लेकिन दूसरे या तीसरे नहीं नियमों को एकजुट करने का कोई रास्ता नहीं था, इसलिए प्रोल ने झूठे जवाब दिए।

Comments