मैंने अभी कोर.लॉगिक के साथ खेलना शुरू कर दिया है, और इस पर काम करने के लिए मैं कुछ सरल कार्यान्वित करने की कोशिश कर रहा हूं जो कि एक समस्या के समान है जिसे मैं वर्तमान में पेशेवर रूप से काम कर रहा हूं। हालांकि, समस्या का एक हिस्सा मुझे फंस गया है ...core.logic में 'बाहरी शामिल' अनुकरण कैसे करें?
मेरे उदाहरण के सरलीकरण के रूप में, यदि मेरे पास वस्तुओं की सूची है, और उनमें से कुछ केवल कुछ देशों में उपलब्ध हैं, और कुछ विशिष्ट में उपलब्ध नहीं हैं देशों। मैं आइटम की सूची निर्दिष्ट सक्षम होने के लिए चाहते हैं, और अपवाद हैं, कुछ की तरह:
(defrel items Name Color)
(defrel restricted-to Country Name)
(defrel not-allowed-in Country Name)
(facts items [['Purse 'Blue]
['Car 'Red]
['Banana 'Yellow]])
(facts restricted-to [['US 'Car]])
(facts not-allowed-in [['UK 'Banana]
['France 'Purse]])
संभव हो तो, मैं था बल्कि नहीं निर्दिष्ट अनुमति-इन सभी देशों के लिए, प्रतिबंधों के साथ वस्तुओं के सेट के रूप में अपेक्षाकृत छोटा है, और मैं किसी दिए गए देश के लिए किसी आइटम के लिए अनुमति/बहिष्कृत करने के लिए एक ही परिवर्तन करने में सक्षम होना चाहता हूं।
मैं एक नियम है कि एक देश के लिए की आइटम/रंग सूची प्रदान करती है, तो निम्न बाधाओं के साथ कैसे लिख सकते हैं:
- आइटम आइटम
- देश/मद चाहिए की सूची में होना चाहिए 'नहीं-अनुमति के रखने वाले' सूची में नहीं जा
- कोई एक:
- में कोई भी देश नहीं है प्रतिबंधित करने कि आइटम
- देश/आइटम जोड़ी restricted- में है के लिए सूची सूची
वहाँ किसी तरह यह करने के लिए है? क्या मैं पूरी तरह से गलत तरीके से चीजों के बारे में सोच रहा हूं?
तक 'जमीन तर्क', मैं तुम्हें एक मूल्य के बजाय क्वेरी चर मतलब यह मानें कि? माफी, लॉजिक प्रोग्रामिंग के साथ मेरा आखिरी ब्रश लगभग 25 साल पहले एक अंडरग्रेड प्रोलॉग कोर्स था ... –
यह एक अनबाउंड या अनगिनत चर नहीं हो सकता है। एक मान ग्राउंड है यदि इसमें अनबाउंड लॉजिक वेरिएबल नहीं हैं (उदाहरण के लिए [1 2 0._] जमीन नहीं है)। यह कार्य प्रासंगिक होता है यदि फ़ंक्शन एक लक्ष्य है और आप तर्क चर के रूप में क्वेरी चर पारित कर रहे हैं। इस गलती में, 'आइटम-रंग-देश-देश' के लिए अपनी पहली तर्क जमीन होने की आवश्यकता है। लक्ष्य मेरे प्रारंभिक उत्तर से अधिक लचीला और composable है। उदाहरण के लिए हम अमेरिका में उपलब्ध पर्स के रंगों से पूछ सकते हैं। https://gist.github.com/1557417 – Ambrose
स्पष्टीकरण के लिए धन्यवाद! –