यह एक अच्छा सवाल है!
मैं एक संपूर्ण जवाब देने के लिए प्रयास नहीं कर रहा हूँ, लेकिन मैं सोचा की कुछ लाइनें मदद कर सकते हैं कि आप इन विधेय बेहतर समझने के लिए सुझाव देना चाहते हैं:
- सोचो इन विधेय के जो के बारे में अधिक हैं के अर्थ में मौलिक के संदर्भ में क्या व्यक्त किया जा सकता है। उदाहरण के लिए, क्या आप
setof/3
के संदर्भ में findall/3
व्यक्त कर सकते हैं? और दूसरी तरफ के बारे में क्या? यह इन सभी भविष्यवाणियों को लागू करने के लिए आपको कम से कम प्रदान करने की आवश्यकता है, यह देखने में सहायता करता है।
- इस बारे में सोचें कि घोषणात्मक गुण इन भविष्यवाणियों द्वारा संरक्षित हैं। उदाहरण के लिए, क्या ऑर्डर जिसमें समाधान पाए जाते हैं, परिणाम को प्रभावित करते हैं? इनमें से कौन सा भविष्यवाणी करता है? क्या इनमें से कोई भविष्यवाणी विफल हो सकता है? किस मामले में ठीक है?
- इन भविष्यवाणियों में से अंतरिक्ष और समय जटिलता के बारे में सोचें। इनमें से कौन सा भविष्यवाणी, यदि कोई है, को लागू किया जा सकता है और दूसरों की तुलना में अधिक कुशलता से उपयोग किया जा सकता है? और किस कीमत और व्यापार पर?
इसके अलावा, मैं सुझाव है कि आप पढ़ा रिचर्ड ओ'कीफी का पुस्तक इन विधेय बारे में महत्वपूर्ण जानकारी के लिए Prolog की क्राफ्ट।
आपके द्वारा दिया गया लिंक 'findall/3' बनाम' bagof/3' बताता है। 'setof/3' 'bagof/3' की तरह है, सिवाय इसके कि यह अनावश्यक समाधान हटा देता है (परिणाम सूची में तत्व अद्वितीय हैं) और यह परिणाम आरोही क्रम में टाइप करता है। – lurker
संक्षिप्त उत्तर: निर्भर करता है कि आप क्या हासिल करना चाहते हैं। यदि आप ठोस उपयोग के मामले का वर्णन करते हैं और अपने उपयोग मामले के संदर्भ में तीन ('bagof/3',' setof/3', और 'findall/3') की तुलना करते हैं तो आपको अधिक _useful_ उत्तर मिल सकते हैं। –