我已經在計劃下面的代碼錯誤:在方案
(define (serie A B)
(if (> A B)
(
(define AB (* A B))
(write AB)
)
(
(write "No")
)
)
)
當我調用此函數,出現以下錯誤: prog.scm:5:53:未綁定變量
爲什麼這是否發生?
我已經在計劃下面的代碼錯誤:在方案
(define (serie A B)
(if (> A B)
(
(define AB (* A B))
(write AB)
)
(
(write "No")
)
)
)
當我調用此函數,出現以下錯誤: prog.scm:5:53:未綁定變量
爲什麼這是否發生?
在Scheme中,括號不是而是,用於分隔代碼塊,與其他編程語言中的大括號不同。並且你不能在另一個表達式中使用define
變量(只能在過程開始時才能完成);改爲使用let
。構建和縮進代碼正確的方法是:
(define (serie A B)
(if (> A B)
(let ((AB (* A B)))
(write AB))
(write "No")))
當然,你並不真的需要一個局部變量,你應該直接寫相乘的結果:
(define (serie A B)
(if (> A B)
(write (* A B))
(write "No")))
無論是方式,它按預期工作:
(serie 10 20)
=> "No"
(serie 100 20)
=> 2000
報告的具體錯誤是由錯誤的'define'引起的。詳情請參閱我的回答。 –