2016-12-04 11 views
5

में सुंदर प्रिंटिंग बंद करें मैं विंडोज 10 पर Emacs 24.5.1 चला रहा हूं और SICP के माध्यम से काम कर रहा हूं। एमआईटी संपादक एडविन अच्छी तरह से काम नहीं करता है, खासकर विंडोज़ पर। रैकेट एक अच्छा विकल्प प्रतीत होता है। मैंने रैकेट और racket-mode दोनों स्थापित किए हैं और सबकुछ ठीक चल रहा है। हालांकि, racket-mode मेरे परिणामों को सुंदर प्रिंट करने पर जोर देता है। मैं इसे दशमलव रूप में प्रिंट करने के लिए कैसे प्राप्त करूं?Emacs: रैकेट-मोड

उदाहरण के लिए

,

(require sicp) 

(define (square x) (* x x)) 

(define (average x y) 
    (/ (+ x y) 2)) 

(define (improve guess x) 
    (average guess (/ x guess))) 

(define (good-enough? guess x) 
    (< (abs (- (square guess) x)) 0.001)) 

(define (sqrt-iter guess x) 
    (if (good-enough? guess x) 
     guess 
     (sqrt-iter (improve guess x) 
       x))) 

इस तरह के

के रूप में परिणाम documentation की
> (sqrt-iter 1 2) 
577/408 

बहुत सारे ऊपर आता है जब मैं शब्द "रैकेट" और गूगल का उत्पादन "सुंदर प्रिंट," लेकिन मैं कर रहा हूँ इसका कोई भाग्य नहीं है। रैकेट प्रलेखन 'सुंदर-प्रिंट' के साथ शुरू होने वाली कुछ चर के माध्यम से सुंदर-प्रिंटिंग को नियंत्रित करता प्रतीत होता है। फिर भी racket- या prettyM-x के साथ शुरू होने से कुछ भी नहीं आता है। हो सकता है कि अंश रूप वह नहीं है जो रैकेट सुंदर प्रिंटिंग मानता है?

उत्तर

3
चल बिन्दु संख्या 1.0 और 2.0 के बजाय सटीक संख्या 1 और 2

शाब्दिक 1 के साथ यात्रा शुरू जबकि 1.0 या 1. एक चल बिन्दु संख्या के रूप में पढ़ने के लिए है एक सटीक पूर्णांक के रूप में पढ़ा जाता है

अब सटीक एक अचूक संख्या दोनों पर फ़ंक्शन/काम करता है। यदि सही संख्या में खिलाया जाता है तो यह एक अंश उत्पन्न करता है (जो अंततः प्रतिलिपि में मुद्रित होता है)।

क्या आप एक सुंदर प्रिंटर के प्रभाव को नहीं देख रहे हैं, लेकिन वास्तविक परिणाम। एल्गोरिदम केवल फ्लोटिंग पॉइंट नंबरों पर इनपुट के रूप में कुशलता से काम करता है ताकि आप अपने कार्य में exact->inexact पर कॉल जोड़ने पर विचार कर सकें।

1

यह वास्तव में जानबूझकर है और योजना मानक (आर 5 आरएस, आर 7 आरएस) का हिस्सा है। यह रैकेट तक ही सीमित नहीं है लेकिन किसी भी योजना दुभाषिया/आरईपीएल का उत्पादन होना चाहिए। सुंदर प्रिंटिंग के साथ इसका कोई लेना-देना नहीं है। इसे ज्यादातर अच्छी बात माना जाता है क्योंकि यह आपको फ्लोटिंग पॉइंट सन्निकटन के बजाय सटीक संख्या (तर्कसंगत संख्या) दे रहा है। यदि आप फ़्लोटिंग पॉइंट परिणाम चाहते हैं तो इसके बजाय 1.0 का उपयोग करके 1.0 का उपयोग करके अनुरोध करें। वैकल्पिक रूप से, आप exact->inexact फ़ंक्शन का उपयोग कर सकते हैं उदा।

> (exact->inexact 1/3) 
0.3333333333333333 
0

जैसा कि अन्य उत्तरों समझाते हैं, यह पता चला कि यह वास्तव में सुंदर प्रिंटिंग के बारे में नहीं है।

Emacs चर racket-pretty-print है:

लेकिन अगर आप सचमुच सवाल (क्या तुमने कभी रैकेट-मोड में सुंदर मुद्रण निष्क्रिय करने के लिए करना चाहता था, तो) जवाब देने के लिए।

आप सी-एच वी का उपयोग कर इसके बारे में दस्तावेज़ देख सकते हैं।

यह आप या तो बदलने के लिए:

  • उपयोग Emacs 'एम एक्स अनुकूलित यूआई।

  • अपने Emacs init फ़ाइल में (setq racket-pretty-print nil) का उपयोग करें, उदाहरण के लिए racket-repl-mode-hook में।