0
(define-struct point (x y))


(define (helper lon)
  (* (point-x lon)
     (point-y lon)))

(define (cart lon)

  (cond
    [(empty? lon) 0]
    [else
     (+ (helper (first lon))
        (cart (rest lon))1)]))

私はちょうど遊んでいて、ローカルを使用できるかどうか、どこで使用できるかを確認するためにたくさんの関数を作成しています。これは、ポイント x と y を乗算し、結果に 1 を追加するだけです。ここで作成したヘルパー関数を置き換えてローカルを使用する方法はありますか?

4

1 に答える 1

1

確かに、プロシージャが内部でのみ使用されているlocal限り、これは を使用するのに適した場所のようです。helpercart

(define (cart lon)
  (local [(define (helper lon)
            (* (point-x lon)
               (point-y lon)))]
    (cond
      [(empty? lon) 0]
      [else
       (+ (helper (first lon))
          (cart (rest lon))
          1)])))

また、使用している言語によってはlocal必要ない場合もあります。単純な内部定義でもうまくいきます。

(define (cart lon)
  (define (helper lon)
    (* (point-x lon)
       (point-y lon)))
  (cond
    [(empty? lon) 0]
    [else
     (+ (helper (first lon))
        (cart (rest lon))
        1)]))
于 2013-11-03T20:05:12.590 に答える