這裏是abs
一個定義:
(define (abs n)
((if (< n 0) - +) n))
當給返回評估-
的結果,否則+
所以如果你是通過-5
變得(- -5)
和的情況下5
獲得通過,也爲負數變成(+ 5)
。兩者評估爲5
。你看到我正在使用表達式作爲函數返回嗎?這也就是在括號的意思..在一個類似C語言無視圍繞每個學期你有雙括號幾個地方的括號的時候我可能會做類似(n < 0 ? sub : add)(0, n)
在你cond
:
((display "Time") (newline))
((display n) (newline) (countdown (- n 1)))
他們都假設顯示函數返回一個可以應用的函數。它不會,它會告訴你,這不是一個函數失敗。
如果您正在尋找將命令組合在一起,如C語言中的{}
,那麼您正在尋找特殊形式begin
。例如。(begin 1 2 3) ; ==> 3
cond
在它的每一個方面的明確begin
所以如果你只是想每一個部分進行評估修訂如下:
(define (countdown n)
(cond ((zero? n) (display "Time") (newline))
(else (display n) (newline) (countdown (- n 1)))))
的另一種方法格式化是這樣的:
(define (countdown n)
(cond
((zero? n)
(display "Time") (newline))
(else
(display n)
(newline)
(countdown (- n 1)))))
注意括號與同一級別對齊,以便您知道下一個詞何時開始。它可以幫助你閱讀代碼,因爲你在問題中的格式沒有提供任何線索。得到一個適當的編輯器來做你的編碼。