मैं योजना सीखने और मेरे पर्यावरण के लिए पीएलटी-योजना का उपयोग करने के लिए लिटिल शेमर के साथ काम कर रहा हूं।योजना में निरंतरता को समझने में सहायता
लिटिल स्कीमर मुझे प्रत्यावर्तन के साथ काफी मदद की है (अब यह मेरे लिए स्पष्ट है), लेकिन मैं किताब है कि "कलेक्टरों" का परिचय और एक निरंतरता एक पूरे के रूप फ़ंक्शन को कॉल करने के एक हिस्से पर अटक कर रहा हूँ।
यहां उदाहरण कोड है जिसका उपयोग उन्होंने किया है। मैं रिकर्सिव तत्वों को समझता हूं लेकिन मैं विशेष रूप से लैम्ब्डा कार्यों पर अटक गया हूं - मेरा दिमाग पथ का पालन नहीं कर सकता है और उस लैम्ब्डा फ़ंक्शन के लिए तर्क कैसे सेट किए जाते हैं (क्योंकि उनका एकमात्र कॉल उन्हें फिर से रिकर्सन में कॉल करना है, वहां है फ़ंक्शन बॉडी के भीतर कोई ठोस उपयोग नहीं)।
यदि कोई मुझे लैम्ब्डा कलेक्टरों में फ़ंक्शन के पुनरावृत्ति के माध्यम से गणना के पथ को तोड़ने के लिए कम या कम कर सकता है, जो मेरी मदद कर सकता है।
;; Build a nested list of even numbers by removing the odd ones from its
;; argument and simultaneously multiply the even numbers and sum the odd
;; numbers that occur in its argument.
(define (even-only-collector l col)
(cond
((null? l)
(col (quote()) 1 0))
((atom? (car l))
(cond
((even? (car l))
(even-only-collector (cdr l)
(lambda (newl p s)
(col (cons (car l) newl)
(* (car l) p) s))))
(else
(even-only-collector (cdr l)
(lambda (newl p s)
(col newl
p (+ (car l) s)))))))
(else
(even-only-collector (car l)
(lambda (al ap as)
(even-only-collector (cdr l)
(lambda (dl dp ds)
(col (cons al dl)
(* ap dp)
(+ as ds)))))))))
;; The collector function
(define (collector newl product sum)
(cons sum
(cons product newl)))
अग्रिम धन्यवाद !!
@lpthnc: क्या आपने newLISP पर देखा है? – Ixmatus