2016-12-04 4 views
5

私はWindows 10でEmacs 24.5.1を実行していて、SICPで作業しています。 MITエディタEdwinは、特にWindowsではうまく機能しません。ラケットは良い選択肢のようです。私はラケットとracket-modeの両方をインストールしており、すべてが正常に動作するようです。しかし、racket-modeは私の結果をきれいに印刷することを主張しています。小数点形式で印刷するにはどうすればよいですか?Emacs:ラケットモードでかわいい印刷をオフにする

例えば

、これは私が用語「ラケット」とGoogle際documentation

> (sqrt-iter 1 2) 
577/408 

ロットが立ち上がるなど

として結果を生成

(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))) 

「プリティプリントを、」私はねそれを意識して運がない。 Racketのドキュメンテーションは、「pretty-print」から始まるいくつかの変数を介してきれいな印刷を制御するようです。それでもracket-またはprettyから始まるものはM-xになります。多分、小数点形式は、ラケットがかわいい印刷と考えるものではないでしょうか?

答えて

3
は1.0又は1が浮動小数点数として読み取られるのに対し、正確な整数として読み取られる浮動小数点数1.0と2.0というより正確な数字1,2

リテラル1と反復を開始

ここで、関数/は正確に両方の不正確な数に作用します。正確な数値が入力された場合、それは小数を生成します(最終的にはreplに出力されます)。

これは、かなりのプリンタの効果が実際の結果ではないことを示しています。アルゴリズムは浮動小数点数の入力としてのみ効率的に機能するため、関数にexact->inexactの呼び出しを追加することを検討できます。

1

これは実際には意図的であり、Scheme標準(R5RS、R7RS)の一部です。これはRacketに限らず、Schemeインタプリタ/ REPLの出力でなければなりません。それはかわいい印刷とは関係ありません。これは、浮動小数点の近似ではなく、正確な数(有理数)を与えるので、大部分は良いことと考えられます。浮動小数点の結果が必要な場合は、1などではなく1.0を使用して要求します。exact->inexact関数を使用することもできます。

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

他の回答が説明するように、これは実際にはかなり印刷されていないことが判明しました。

Emacsの変数がracket-pretty-printである:(あなたががラケットモードできれいな印刷を無効にしたい場合はなかった)しかし、あなたに答えるため

は文字通り問います。

C-h vを使用してドキュメントを表示できます。

  • 利用EmacsのM-X UIをカスタマイズ:あなたはどちらかにすることができ、それを変更するには

  • racket-repl-mode-hookのように、Emacsの初期化ファイルに(setq racket-pretty-print nil)を使用してください。

関連する問題