この関数が数値に 1 を足すだけで、乗算を完全に無視するのはなぜですか?
(define (ev n)
(local [(define (res l)
( * 2 n))]
(+ 1 n)))
…あなたはres
どこにも電話していないからです。特別なlocal
フォームはヘルパー プロシージャを定義するのに役立ちますが、それだけです -それらを定義します。明示的に呼び出されない場合は何もしません。(* 2 n)
また、式が2 倍になっていることにも注意してください。ただし、パラメーターn
は無視されています。l
何を書こうとしていたのかわからないのですが、おそらくこのようなものでしょうか?
(define (ev n)
(local [(define (res l)
(* 2 l))]
(res (+ 1 n))))
(ev 3)
=> 8