(define (subtract-1 n)
(string-append "Number is: " (number->string n))
(cond
[(= n 0) "All done!"]
[else (subtract-1(- n 1))]))
我不斷收到錯誤:define:預計只有一個函數體的表達式,但找到1個額外的部分。我不明白爲什麼我得到這個。爲什麼這個表達式給我一個函數體錯誤?
自我注意事項:使用DrRacket時,將語言設置爲BSL可能會在編譯時使Racket命令出錯。
'(string-append ...)'和'(cond ...)'都在函數體中。 –
@ dotnetN00b:是的,BSL是Racket的一種限制形式,其中函數只能在它們的主體中有一個表達式。限制旨在幫助初學者將副作用與價值混淆:它會迫使你寫作時不會產生副作用。如果你想要副作用,你需要在BSL之外。順便說一句,在上面的代碼中,似乎有些混亂:看起來你想打印一條日誌消息,但代碼實際上是_computing_一條不會被看到的日誌消息。 – dyoo