在带有#lang racket
的DrRacket中,我可以这样输入二进制格式的数字:
> #b10.1
2.5
而且我可以像这样以二进制格式打印数字:
> (printf (~r 2.5 #:base 2))
10.1
如何使数字在REPL中自动以二进制形式打印,如下所示:
> #b10.1
#b10.1
或者也许这样:
> #b10.1
10.1
?
请注意,我不只是要打印带有“ #b”的十进制数字。例如,当我绘制数字时,#b10.1
的行为应类似于2.5。
如果没有为此目的而设计的配置设置,则可能需要替换REPL中的P,即替换read-eval-print-loop的打印部分。
您可以使用current-print
访问和更改REPL的打印机。例如,您可以将所有数字打印为二进制,并使用标准current-print
值打印其他值。 (更改参数之前,请确保捕获(current-print)
值。
current-print
现在无论何时您输入的代表编号值始终以2为单位打印。请注意,尽管输入值不受影响,但结帐#lang racket
(define base-print (current-print))
(define (new-print val)
(if (number? val)
(display (~r val #:base 2))
(base-print val)))
(current-print new-print)
current-prompt-read