मैं जब guile
का उपयोग कर एक योजना कार्यक्रम में +
ऑपरेटर को पुनर्परिभाषित एक अप्रत्याशित परिणाम प्राप्त किया। मुझे यह इंगित करना चाहिए कि भाषा को समझने के लिए प्रयोग करते समय यह हुआ; एक उपयोगी कार्यक्रम लिखने के लिए यहां कोई प्रयास नहीं है।योजना: पूर्वनिर्धारित ऑपरेटर को फिर से परिभाषित करते समय यह परिणाम क्यों होता है?
(define (f a b) 4)
(define (show)
(display (+ 2 2)) (display ",") (display (f 2 2)) (newline))
(show)
; guile & mit-scheme: "4,4"
(define (+ a b) 5)
(define (f a b) 5)
(show)
; mit-scheme: "5,5"
; guile: "4,5" - this "4" is the unexpected result
(define (show)
(display (+ 2 2)) (display ",") (display (f 2 2)) (newline))
(show)
; guile & mit-scheme: "5,5"
guile
में समारोह show
+
के पूर्वनिर्धारित परिभाषा के बाद भी मैं इसे नए सिरे से परिभाषित किया है, हालांकि यह f
की नई परिभाषा का उपयोग करता है का उपयोग करता है:
कोड यह रहा। +
की नई परिभाषा को पहचानने के लिए मुझे show
को फिर से परिभाषित करना होगा। mit-scheme
में दोनों नई परिभाषाएं तत्काल पहचानी जाती हैं, जो मैं होने की उम्मीद कर रहा था। इसके अलावा, +
के किसी भी आगे की परिभाषाओं तुरन्त show
को फिर से परिभाषित करने के लिए बिना दोनों व्याख्याकारों द्वारा मान्यता प्राप्त हैं।
guile
में दृश्यों के पीछे क्या चल रहा है ताकि यह इन परिभाषित ऑपरेटरों के अलग-अलग संदर्भों को बाध्य कर सके?
और क्यों दो दुभाषियों के बीच क्या अंतर है?
दिलचस्प। बहुत स्पष्ट रूप से समझाया प्रश्न के लिए +1। –