2015-07-10 77 views
0

這裏是一個嘗試寫一個不同的字符串取決於變量的值到標準輸出的一個例子:如何在MIT-Scheme中的條件表達式中寫入stdout?

(let ((x 1)) 
(cond ((< x 2) 
     (display "hooray")) 
     (else 
     (display "bummer"))) 
) 

注意,正確的字符串並獲得書面,但是我們也有一個「未指定的返回值」

我的理解是,這是因爲解釋器試圖將條件的「隨後的表達式」的值作爲條件的值返回,但「顯示」表達式不返回任何值。

有沒有更好的方法來做到這一點?

+2

請記住,返回值只印在REPL,如果你在命令行'MIT-方案--quiet --load /我-file'返回值是無法運行此。打印。 – Rptx

回答

2

鑑於此表達不僅是因爲它的效果評估(打印信息),你應該明確地返回一個值作爲let形式的結果(任何值!):

(let ((x 1)) 
    (cond ((< x 2) 
     (display "hooray") 
     (newline)) 
     (else 
     (display "bummer") 
     (newline))) 
    'ok) 

現在,我們將得到:

hooray 
'ok