2011-12-02 34 views
2

我還在學習lisp,所以當我遇到這個問題時,它讓我困惑。 我有一個簡單的功能,我想打印,然後再讀取輸入:SBCL開關打印和讀取命令(lisp)

(defun ask() 
    (princ '?) 
    (read)) 

所以,當我跑這跟CLISP,這表明什麼預期,它打印出來,然後,在相同的?行,我可以將輸入寫入讀取函數。

當我用SBCL運行它時,它出錯了。首先問我輸入,然後打印?我想這可能是因爲我沒有製作換行符,但我真的很想知道如何在同一行中使用SBCL進行這項工作。另外,我想知道爲什麼CLISP的結果是正確的,而SBCL沒有。 非常感謝您的幫助。

回答

10

它適用於我的正確順序,但也許你的情況可以連接輸出緩衝,由SBCL執行。您可以在princ之後加(finish-output)以保證打印將在調用read之前完成。

+0

非常感謝,它的工作! – DJM