在球拍中使用局部

时间:2013-11-02 00:51:23

标签: scheme local racket

(define (flip l)
  (local [(define (flip p)
            (make-posn (posn-y p)
                       (posn-x p)))]))
这只是翻转两个位置的位置。它应该工作。我用括号做错了吗?

继续给我这个错误 - 本地:期望在本地定义之后的表达式,但没有任何东西。

2 个答案:

答案 0 :(得分: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 :(得分:1)

如果您查看documentation for local,则会看到定义后需要正文。在您关闭]之后,您没有任何内容,因此它抱怨local内缺少正文。

我无法确定你在这里想做什么,但也许了解错误的原因将有助于你朝着正确的方向前进。