2013-11-03 77 views
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。有沒有辦法可以替換我在這裏創建的幫助函數並使用本地?在本地計劃中使用

回答

1

當然,這似乎是一個不錯的地方使用local,只要是僅使用內carthelper過程:

(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)])) 
+0

這就是問題所在。我一直在搞糟那些東西。謝謝! – Josh

+0

@Josh一個好的IDE會幫助你,過了一段時間你會忘記這些parens;)順便說一句,我在我的答案中增加了一條信息,查看更新。 –