क्या प्रोलॉग में स्थिरांक को परिभाषित करने का कोई तरीका है?प्रोलॉग कॉन्स्टेंट्स
मुझे लगता है मैं उपयोग कर रहा हूँ की तरह
list1 :- [1, 2, 3].
list2 :- [4, 5, 6].
predicate(L) :- append(list1, list2, L).
काम के आसपास कुछ लिखने के लिए अब
list1([1, 2, 3]).
list2([4, 5, 6]).
predicate(L) :-
list1(L1),
list2(L2),
append(L1, L2, L).
है चाहते हैं, लेकिन वह इस तरह का "बेकार" चर बाध्य करने के लिए एक सा अनाड़ी है हर बार मुझे निरंतर उपयोग करने की आवश्यकता होती है।
मुझे लगता है कि एक और (यहां तक कि uglier) काम करता है, निर्माण श्रृंखला में सीपीपी शामिल करना होगा।
(अपने वास्तविक आवेदन में, सूची एक बड़ी कई स्थानों में इस्तेमाल किया LUT है।)
एक काम के आसपास नहीं है यही कारण है कि। इसे तथ्य-घोषणा कहा जाता है। आप इस तथ्य को घोषित करते हैं कि 'सूची 1/1' लगातार लक्ष्य है यदि इसका तर्क '1,2,3]' है। प्रोलॉग में कोई चर नहीं है, इसलिए आप मान सकते हैं कि प्रत्येक "मान" (परमाणु या शब्द) निरंतर है और प्रत्येक "चर" (मान का नाम) निरंतर स्थिर नहीं है। प्रत्येक "परिवर्तनीय" (उदा। 'एल 1') भी '(1 + 2 * 3)' पकड़ सकता है और इसका कभी भी व्याख्या नहीं किया जाएगा, क्योंकि यह शब्द ('(1+ (2 * 3)) जैसा कुछ है और वहां है तथ्य '(7 है (1+ (2 * 3))। ')। जब आप' सूची 1 'को संलग्न करने के तर्क के रूप में पास करते हैं तो इसे परमाणु के रूप में व्याख्या किया जाता है। आप' myappend (list1, list2, [1,2,3] को परिभाषित कर सकते हैं , 4,5,6])। ' – ony
मैं होने स्थिरांक नहीं करने के लिए एक काम के आसपास। – aioobe