我在 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
很多documentation当我在谷歌上搜索“Racket”和“pretty-print”这两个词时出现了,但我没有运气理解它。 Racket 文档似乎通过一些以“pretty-print”开头的变量来控制 pretty-print 。但是没有以
racket-
开头的内容或 pretty
在 M-x
内过来。也许分数形式不是 Racket 认为的 pretty-print ?
最佳答案
使用浮点数 1.0 和 2.0 而不是精确的数字 1 和 2 开始迭代。
文字 1 被读取为精确整数,而 1.0 或 1. 被读取为浮点数。
现在函数/适用于两个精确的不精确数字。如果输入确切的数字,它会产生一个分数(最终会打印在 repl 中)。
那就是您看到的不是 pretty-print 的效果,而是实际结果。该算法仅在浮点数作为输入时有效,因此您可以考虑添加对 exact->inexact
的调用到你的功能。
关于Emacs:在 Racket 模式下关闭 pretty-print ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40965074/