2013-12-18 18 views
6

मैं जीएनयू/एमआईटी योजना का उपयोग कर रहा:क्यों + और * क्रमशः 0 और 1 का मूल्यांकन करते हैं?

1 ]=> (+) 

;Value: 0 

1 ]=> (*) 

;Value: 1 

1 ]=> (-) 

;The procedure #[arity-dispatched-procedure 2] has been called with 0 arguments; it requires at least 1 argument. 
;To continue, call RESTART with an option number: 
; (RESTART 1) => Return to read-eval-print level 1. 

2 error> (/) 

;The procedure #[arity-dispatched-procedure 3] has been called with 0 arguments; it requires at least 1 argument. 
;To continue, call RESTART with an option number: 
; (RESTART 2) => Return to read-eval-print level 2. 
; (RESTART 1) => Return to read-eval-print level 1. 

कैसे + आते हैं और * दोनों क्रमश: 0 और 1 के लिए मूल्यांकन किया जाता है। और - और / का मूल्यांकन क्यों एक त्रुटि फेंकता है?

योजना परिभाषा का यह हिस्सा है या क्या यह जीएनयू/एमआईटी योजना में कार्यान्वयन विस्तार है?

+0

https://en.wikipedia.org/wiki/Empty_product https://en.wikipedia.org/wiki/Empty_sum – Wes

उत्तर

9

इस के पीछे तर्क है कि + और * पहचान तत्वों

1 * x = x * 1 = x 
0 + x = x + 0 = x 

है जबकि - और / सही पहचान है, लेकिन के रूप में छोड़ दिया साहचर्य ऑपरेटरों इस नकारता है (यमक!) उनके मूल्य। शुरुआती तत्व गणितीय रूप से पहचान होने के साथ संख्याओं की सूची में एक गुना के रूप में एक भिन्नता के बारे में सोचने के लिए समझ में आता है, आप इसे एक-एक करके एक साथ जोड़ने से अलग नहीं कर सकते हैं। इसके अलावा, एक खाली सूची में एक गुना सिर्फ बीज तत्व, पहचान है।

हालांकि - और / पहचान तत्वों की कमी है, तो वापस लौटने के लिए कोई सौदा डिफ़ॉल्ट नहीं है।

और यह की R5RS

+0

डिवीजन एक सही पहचान मूल्य _has_, यह एक हिस्सा है '1'। घटाव की एकमात्र सही पहचान है: '0'। तो कड़ाई से बोलते हुए, वे पहचान तत्वों की कमी नहीं कर रहे हैं –

+2

@ ओस्कर लोपेज़ लेकिन विभाजन और घटाव को छोड़ दिया गया है, जिससे उन्हें – jozefg

+0

@jozefg में बाएं सहयोगी (फ़ोल्ड) या दाएं सहयोगी फोल्ड (फ़ोल्डर) ? –

2

आप एक fold के मामले में + या * के बारे में सोच, या reduce आप वे एक बीज या संचायक मूल्य की जरूरत दिखाई देगा। * के लिए, 1 समझ में आता है। + 0 के लिए समझ में आता है। तो आप कम करने के बीज/संचयक वापस प्राप्त कर रहे हैं।

यह भी spec का हिस्सा है। http://gnuvola.org/software/guile/doc/Arithmetic.html#index-g_t_002a-487

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