我想运行一个函数,但没有将结果输出到终端。例如,(set 'A 'B)
通常会在控制台中返回B
,如下所示:
>>> (set 'A 'B)
B
>>> A
B
我不希望它返回任何东西;我仍然希望函数能够做到它应该做的事情,只是默默地:
>>> (set 'A 'B)
>>> A
B
答案 0 :(得分:3)
它并不完美,但您可以在表达式的末尾使用(值)来抑制输出。你得到一个空行。
Common Lisp:
(progn (set 'A 'B) (values))
我不确定Scheme中的等价物。
lisp REPL始终打印一些返回值。如果你真的不想输出,可以在终端中将代码作为脚本运行。
示例:
#!/path/to/interpreter
(set 'A 'B)
[rest of program]
答案 1 :(得分:1)
由于打印的值实际上是函数的返回值,并且函数的返回值是最后一个表达式的值,因此您可以在结尾添加一个“空”(返回例如“”)指令。 /在你的电话之后。
答案 2 :(得分:0)
我找到了与user1613254相同的解决方案,但我为此制作了一个宏(将它放在我的.sbclrc中):
(defmacro m-ignore (fun &body body)
"ignores the return value of a function"
`(progn (,fun ,@body)
(values)))
你这样使用它:
(m-ignore format t "text")
输出结果为:
文本
而不是:
文字
NIL
(format t "text")