2013-11-02 37 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身体缺失。

我真的不知道你在这里做什么,但也许理解错误的原因将有助于你朝着正确的方向前进。