如何让Racket不打印?

时间:2016-12-09 14:49:00

标签: racket

我在Racket中编写一个程序,我正在使用racket foo.rkt运行。这是有效的,除了打印程序顶层的每个表达式的结果,即使没有调用打印函数。就好像程序一行一行地输入REPL,但在这种情况下我根本不想使用REPL,我只是试图从命令行运行一个程序。

如何让Racket不打印?

1 个答案:

答案 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)

defineset!之类的表单返回与(void)相同的值,用于完全相同的目的。

并非球拍支持的所有语言都会打印顶级语句。实际的Scheme语言#!r6rs不会打印顶级语句。