2015-07-01 9 views
5

में "झूठी" और "नहीं" के बीच क्या अंतर है, मैंने Programming in Prolog: Using the ISO Standard पुस्तक के बाद प्रोलॉग सीखना शुरू किया। भाषा के लिए परिचय के पेज 7 पर वे दावा कर दिया: "Prolog में जवाब कोईकुछ भी नहीं प्रश्न साथ सम्मिलित है मतलब करने के लिए प्रयोग किया जाता है यह याद रखना महत्वपूर्ण है कि कोईझूठे के समान नहीं है महत्वपूर्ण है। "। तो SWI-Prologfalse और true कथन yes या no के बजाय क्यों उपयोग करता है?प्रोलॉग

उत्तर

7

आरंभ करने के लिए, आईएसओ मानक (आईएसओ/आईईसी 13211-1: 1 99 5) को एक अपूर्ण लूप परिभाषित नहीं करता है। 1 दायरे में इसे पढ़ता है:

नोट — आईएसओ/आईईसी 13211 के इस भाग को निर्दिष्ट नहीं करता:

...

च) उपयोगकर्ता वातावरण (शीर्ष स्तर पाश, डिबगर, पुस्तकालय
सिस्टम, संपादक, कंपाइलर इत्यादि) एक प्रोलॉग प्रोसेसर के।

परंपरागत रूप से, किसी प्रश्न का उत्तर हाँ या नहीं दिया गया है। हां के मामले में, अगर वर्तमान में उत्तर प्रतिस्थापन दिखाए गए थे।

आज, उत्तर में मौजूद अधिक से अधिक बाधाओं के साथ, परंपरागत अपूर्ण लूप का उपयोग करने के लिए थोड़ा बोझिल हो जाता है। ?- dif(X,a). का सही उत्तर क्या है? यह हाँ नहीं हो सकता है, यह हो सकता है शायद, जिसका उपयोग पहले Jaffar et al.s CLP(R) द्वारा किया गया था। लेकिन अक्सर एक जवाब का पुन: उपयोग करना चाहता है।

?- dif(X,a). 
dif(X,a). 

?- dif(b,a). 
true. 

?- true. 
true. 

एसडब्ल्यूआई में विचार टेक्स्ट को उत्तर के रूप में प्रस्तुत करना है ताकि आप इसे एक ही परिणाम प्राप्त करने के लिए इसे वापस पेस्ट कर सकें। इस तरह उत्तर की सिंटैक्स कुछ डिग्री के लिए निर्दिष्ट है - इसे वैध प्रोलॉग टेक्स्ट होना चाहिए।

तो यदि अब हाँ नहीं है, तो क्यों नहीं होना चाहिए? इस कारण से एसडब्ल्यूआई उत्तर के रूप में false. देता है। एसडब्ल्यूआई से पहले, Prolog IV ने false का जवाब दिया था। उदाहरण के लिए नोट एसडब्ल्यूआई में निम्नलिखित फिक्सपॉइंट:

?- true; false. 
true ; 
false. 

तो यहां तक ​​कि इस छोटे से विवरण को उत्तर में रखा गया है। जबकि Prolog IV में यह true में ध्वस्त हो गया है क्योंकि Prolog IV दिखाता है कि सभी उत्तरों में एक जवाब झुका हुआ है।

?- true ; false. 

true. 
जवाब पर अधिक जानकारी के लिए

, see this

+6

यह उत्तर तब तक अच्छा था जब तक कि मैंने आपका उपयोगकर्ता नाम नहीं देखा, फिर यह आश्चर्यजनक हो गया। –

+0

@false, आपके उत्तर के लिए धन्यवाद लेकिन फिर भी मुझे बिंदु नहीं मिल सकता है। 'मानव (सॉक्रेटीस) जैसे' 'मानव (अरस्तू)।' और 'एथेनियन (सॉक्रेटीस) जैसे सरल दावों के लिए। मैं प्रश्न के लिए' सत्य-प्रवाह 'के बजाय' हां 'और' नहीं 'उत्तर की अपेक्षा करूंगा। ? - एथेनियन (सॉक्रेटीस)। और '? -थेथेनियन (अरिस्टोटल)। –

+0

@ एनीरिको पिरानी: क्यों' सत्य 'का जवाब नहीं देते? या 'झूठा'? कई इंसान इस तरह उत्तर देते हैं: * सॉक्रेटीस मानव है? सच! प्रोल मानव है? झूठा! * या '3> 2'? 'TRUE'! – false