मैं एक ऑपरेटर "++>" को इस तरह से परिभाषित करना चाहता हूं ताकि "ए ++> बी" टाइप करने से [ए, बी] की सूची बन जाएगी।सूची बनाने के लिए प्रोलॉग में ऑपरेटर को आप कैसे परिभाषित करते हैं?
मैंने निम्नलिखित कोड लिखा है, लेकिन यह काम नहीं करता है।
++>(X,Y) :-
[X,Y].
:- op(500,xfy,++>).
वहाँ वास्तव में दो मुद्दों यहाँ, ऑपरेटर को परिभाषित "++>" एक इन्फ़िक्स संकेतन के रूप में कर रहे हैं, और यह व्यवस्था करते हुए कि "ए ++> बी" अभिव्यक्ति "ए, बी] शब्द के रूप में" मूल्यांकन "की जाएगी। इसका पहला भाग काफी मानक प्रोलॉग है जैसा कि आपको ** op/3 ** के उल्लेख से पता चल रहा है। नए ऑपरेटर को शामिल करने वाले "मूल्यांकन" करने के लिए मशीनरी को जगह लेना मुश्किल है। अंकगणितीय कार्यों के लिए एसडब्ल्यूआई-प्रोलॉग का एक निर्देश है जो **/2 ** उपयोगकर्ता द्वारा परिभाषित कार्यों के साथ काम करने की अनुमति देता है, लेकिन आपका अंकगणितीय कार्य नहीं है। मैं आपको एक नया भविष्यवाणी ** iz/2 ** परिभाषित करने के तरीके को दिखा सकता हूं जो ++> शर्तों का मूल्यांकन करेगा। – hardmath
मुझे एसडब्ल्यूआई-प्रोलॉग के 'अंकगणित_फंक्शन/1' निर्देश के लिए खुदाई करने का अवसर मिला, और मुझे लगता है कि यह [बहिष्कृत, शायद गिरा दिया गया है] (http://www.swi-prolog.org/pldoc/man?predicate= arithmetic_function/1)। – hardmath