0

この関数が数値に 1 を足すだけで、乗算を完全に無視するのはなぜですか?

   (define (ev  n)
      (local [(define (res l)
                ( * 2 n))]

      (+  1 n)))
4

1 に答える 1

1

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

(define (ev n)
  (local [(define (res l)
            (* 2 l))]

    (res (+ 1 n))))

(ev 3)
=> 8
于 2013-11-04T01:46:03.983 に答える