(define (flip l)
  (local [(define (flip p)
            (make-posn (posn-y p)
                       (posn-x p)))]))
这只是翻转了两个 posns 的位置。它应该工作。我在括号中做错了吗?
一直给我这个错误-本地:期望在本地定义之后有一个表达式,但那里什么也没有。
特殊形式在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)))
如果您查看 的文档local,您会发现它在定义之后需要一个正文。关闭后你什么都没有],所以它抱怨身体不见了local。
我无法真正说出您在这里要做什么,但也许了解错误的原因将有助于您朝着正确的方向前进。