Scheme中的整数分数

Nik*_*ola 0 scheme racket

有没有一种简单的方法来显示整数有理数,例如:

(average '(1 2 3 4)) ;returns 2 1/2 
Run Code Online (Sandbox Code Playgroud)

我希望它返回5/2.谢谢.

Ale*_*ing 5

这是DrRacket特有的行为.它定制了Racket打印处理程序,以"漂亮"的方式打印出某些值,其中一些甚至不是纯文本.例如,DrRacket将图像作为图片打印在REPL中,它将语法对象打印为完全交互的小部件,以显示源信息和基准结构.

Racket保留了print定制功能,并不保证这种功能的输出.如果您想要一致的输出,请使用write,除非程序员明确更改,否则将始终生成纯文本.

(write (/ 5 2)) ; => 5/2
Run Code Online (Sandbox Code Playgroud)

请注意,在REPL中,print将使用write用于精确有理数的相同文本表示.