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

это просто переворачивает позиции двух поз. Он должен работать. Я что-то делаю с скобкой?с использованием местных в ракетке

Продолжает давать мне эту ошибку - локальный: ожидается выражение после локальных определений, но ничего там нет.

+0

Вы пытаетесь определить функцию? Если да, то почему вы пытаетесь использовать 'local'? – 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.

Я не могу сказать, что вы пытаетесь сделать здесь, но, возможно, понимание причины ошибки поможет вам двигаться в правильном направлении.

Смежные вопросы