मैं एक Prolog के बारे में सोच रहा था कि शामिल हो सकते हैं एक अंतर्निहित कॉल इस तरह:क्या प्रोलॉग का कोई संस्करण accumulators के उच्च आदेश abstraction का समर्थन करता है?
accum(generator, filter, accumulator)
Calculates all solutions to generator.
For each one, if filter can be proved, accumulator is proved.
Backtracks to find all solutions to filter and generator.
Accumulator may backtrack internally, but multiple proofs of accumulator are
conjoined, not backtracked.
तो, उदाहरण के लिए, आप लिख सकते हैं प्रत्यावर्तन का उपयोग किए बिना एक सूची योग करने के लिए:
X is 0, accum(member(Val,List), True, X is X + Val).
है इस निर्माण या समकक्ष के साथ कोई प्रस्ताव है? ध्यान रखें कि मैं प्रोलॉग में एक नौसिखिया हूं और कुछ स्पष्ट याद आ रही है।
बुध में कोई व्यक्ति केवल एक अनुमानित नाम लिखता है जो यह करता है।हालांकि आप लक्ष्य का उपयोग पैरामीटर के रूप में नहीं कर सकते हैं (जैसा कि आपने प्रश्न में किया है) आपको इसके बजाय लैम्ब्डा का उपयोग करना होगा। –
@PaulBone परिणाम जेनरेटर के सभी समाधानों की गणना करने पर निर्भर करता है। इसलिए, आखिरकार, बुध के 'समाधान' मॉड्यूल से कुछ कॉल करना अभी भी आवश्यक होगा, जब तक कि आप गैर-लॉजिकल विशेषताओं का उपयोग नहीं करना चाहते (जिस स्थिति में adverb "बस" लागू नहीं होता है))। –