2013-11-02 48 views
0
(define (flip l) 
    (local [(define (flip p) 
      (make-posn (posn-y p) 
         (posn-x p)))])) 

這只是翻轉兩個posns的位置。它應該工作。我對括號做了什麼錯誤嗎?使用本地球拍

不斷給我這個錯誤 - 本地:期望本地定義後的表達式,但沒有。

+0

你想要定義一個函數嗎?如果是這樣,你爲什麼試圖使用「本地」? – DaoWen

回答

3

local特殊形式需要一個身體的定義後,所以基本上你錯過調用flip

(define (flip l) 
    (local [(define (flip p) 
      (make-posn (posn-y p) 
         (posn-x p)))] 
    (flip l))) 

...但是,使用local這裏是完全沒有必要的!你可以直接達到同樣的效果:

(define (flip p) 
    (make-posn (posn-y p) 
      (posn-x p))) 
1

如果您檢查documentation for local,您會發現它在定義後面會出現正文。你在關閉]之後沒有任何東西,所以它抱怨local身體缺失。

我真的不知道你在這裏做什麼,但也許理解錯誤的原因將有助於你朝着正確的方向前進。