更改DrRacket REPL中数字的打印

问题描述 投票:0回答:1

在带有#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的打印部分。

racket
1个回答
0
投票

您可以使用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
© www.soinside.com 2019 - 2024. All rights reserved.