2008-11-19 10 views
5

आप सेट का उपयोग कैसे करेंगे! एक साधारण प्रक्रिया में ऐसे मूल्यांकन (+ (एफ 0) (एफ 1)) 0 लौटाएंगे यदि + के तर्कों का मूल्यांकन बाएं से दाएं से किया जाता है लेकिन अगर दावे से दाएं से बाएं मूल्यांकन किया जाता है तो 1 वापस आ जाएगा?सेट का उपयोग कैसे करें! योजना कार्यों में?

उत्तर

6

संभवतः कुछ बाहरी राज्य को स्टोर करने के लिए सबसे आसान तरीका है और एफ के कार्यान्वयन को इसकी सामग्री को प्रभावित करना है।

(define x 0) 
(define (f n) (let ((tmp x)) (set! x n) tmp)) 

इस प्रकार, एक्स शुरू में 0 और च की प्रत्येक कॉल एक्स के वर्तमान मूल्य वापसी और एक्स के नए मूल्य के रूप में तर्क बचत होगी। इस प्रकार (एफ 0) के बाद (एफ 1) दोनों 0 के अंतिम एक्स मान को छोड़कर 0 लौटाएंगे, जबकि मूल्यांकन (एफ 1) के बाद (एफ 0) 0 के बाद 1 0,

के अंतिम एक्स के साथ उपज करेगा
-1

call/cc के साथ।

(define (f) 
    (call/cc 
    (lambda (c) (+ (c 0) (c 1))))) 

(write (f)) 

+ कारणों f के लिए या तो तर्क के भीतर लागू ग तुरंत वापस जाने के लिए, निर्भर करता है जो तर्क पहले मूल्यांकन किया जाता है 0 या 1 उपज।

लेकिन मुझे संदेह है कि यह हमेशा बाएं से दाएं का मूल्यांकन करेगा और इस प्रकार 0

संबंधित मुद्दे