我在Racket中编写一个程序,我正在使用racket foo.rkt
运行。这是有效的,除了打印程序顶层的每个表达式的结果,即使没有调用打印函数。就好像程序一行一行地输入REPL,但在这种情况下我根本不想使用REPL,我只是试图从命令行运行一个程序。
如何让Racket不打印?
答案 0 :(得分:3)
#lang racket
是Racket实现中的默认语言,它打印除(void)
之外的顶级语句,它返回一个始终被REPL忽略的值,以及(values)
,它返回零返回值,因此REPL无需打印。这意味着您可以创建一个main
函数,该函数以其中任何一个结尾,并且它没有来自REPL的输出。
statement-1
statement-2
statement-3
并将其更改为:
(define (main)
statement-1
statement-2
statement-3
(void)) ; or (values)
define
和set!
之类的表单返回与(void)
相同的值,用于完全相同的目的。
并非球拍支持的所有语言都会打印顶级语句。实际的Scheme语言#!r6rs
不会打印顶级语句。