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,只要helper程序只在内部使用cart

(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 回答