我正在Windows 10上运行Emacs 24.5.1并通过SICP进行工作。 MIT编辑器Edwin不能很好地运行,尤其是在Windows上。 Racket 似乎是一个不错的选择。我已经安装了Racket和racket-mode,一切似乎都运行良好。但是,racket-mode
坚持漂亮地打印我的结果。如何获取以十进制格式打印的内容?
例如,
(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)))
这样会产生如下结果
> (sqrt-iter 1 2)
577/408
当我在Google上使用“ Racket ”和“精美打印”这两个字时,会出现很多documentation,但我没有运气。 Racket文档似乎通过一些以'pretty-print'开头的变量来控制 pretty-print 。但是,在
racket-
中以pretty
或M-x
开头的任何内容都不会出现。也许分数形式不是Racket认为漂亮的打印形式? 最佳答案
从浮点数1.0和2.0而不是确切的数字1和2开始迭代。
文字1被读取为精确整数,而1.0或1被读取为浮点数。
现在,函数/可以同时使用两个不精确的数字。如果输入准确的数字,它将产生一个分数(最终最终在repl中打印出来)。
那是您没有看到 pretty-print 的效果,而是实际结果。该算法仅对浮点数作为输入有效,因此您可以考虑将对exact->inexact
的调用添加到函数中。