2009-08-14 10 views
8

मुझे पता है कि:एस, के और मैं संयोजक का उपयोग कर खाली सूची कैसे लिखूं?

(cons [p] [q]) is ((s ((s i) (k [p]))) (k [q])) 
(car [lst]) is ([lst] k) 
(cdr [lst]) is ([lst] (k i)) 

मैं इस

(cons [a] (cons [b] (cons [c] [nil]))) 

प्रकार की सूची है, जो कुछ इस तरह होने जा रहा है लिखना चाहते हैं:

((s ((s i) (k [a]))) (k ((s ((s i) (k [b]))) (k ((s ((s i) (k [c]))) (k [nil])))))) 

लेकिन मुझे नहीं पता एस, के और मैं संयोजकों में 'शून्य' संकलित करने के बारे में जानें। क्या कोई जानता है?

अग्रिम धन्यवाद, एडविन जोस Palathinkal

+0

आप इस पर एक नज़र लेने के लिए चाहते हो सकता है: http://www.cs.bath.ac.uk/~ gam23/शिक्षण/प्रोग्रामिंगIII/10lambdaprogramming.pdf – Pinochle

उत्तर

8

केवल एक चीज है कि आप एक nil प्रतिनिधित्व से की जरूरत है यह पहचान करने के लिए सक्षम होने के लिए है - कुछ null? विधेय कि nil के लिए "सही" और के लिए "गलत" रिटर्न बारे में अन्य सभी जोड़े। इसका मतलब है कि उत्तर सही/गलत के आपके प्रतिनिधित्व पर निर्भर करता है। λxy.x और λxy.y की सामान्य पसंद के साथ, nil के लिए सुविधाजनक एन्कोडिंग λf.[true] है। इसे एसकेआई में अनुवाद करना अब बहुत आसान है (और मैं इसे यहां नहीं करूँगा, क्योंकि यह होमवर्क जैसा दिखता है ...)।

(इसके अलावा, एक null? विधेय nil के लिए इस प्रतिनिधित्व दिया को लागू करने के लिए एक अच्छा व्यायाम है।)

+0

इस उत्तर के लिए धन्यवाद। एडविन जोस पलाथिंकल। – louzer

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

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