2013-05-04 68 views
2

我想運行一個函數,但是沒有在終端輸出結果。例如,(set 'A 'B)通常在類似如下的控制檯返回B在LISP中防止終端輸出

>>> (set 'A 'B) 
B 
>>> A 
B 

我不希望它返回任何東西;我仍然希望功能做什麼它應該,只是默默:

>>> (set 'A 'B) 
>>> A 
B 

回答

3

它並不完美,但你可以在你的表達的末尾使用(值)來抑制輸出。你會得到一個空白行。

的Common Lisp:

(progn (set 'A 'B) (values))

我不知道在計劃的當量。

lisp REPL總是打印一些返回值。如果你真的不想輸出,你可以運行你的代碼作爲終端中的腳本。

例子:

#!/path/to/interpreter 
(set 'A 'B) 
[rest of program] 
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") 
1

時由於打印的價值實際上是你的函數的返回值將被打印出來,和函數的返回值是最後表達式求值的值,你可以簡單地添加一個「空」(例如返回「」)在你的通話結束後/之後的指示。