Вопрос о скобках в Lisp

Этот фрагмент кода взят из книги: «Земля Лисп». Первая версия из книги. Когда я прочитал его, я подумал, что есть круглые скобки "(" не обязательно перед "at-loc-p" во 2-й строке и ")" сразу после loc в 3-й строке.

(defun person-at (loc pers per-locs)
       (labels ((at-loc-p (pers)
                 (eq (cadr (assoc pers per-locs)) loc)))
         (remove-if-not #'at-loc-p pers)))

Но когда я проверял это,

(defun person-at (loc pers per-locs)
       (labels (at-loc-p (pers)
                 (eq (cadr (assoc pers per-locs)) loc))
         (remove-if-not #'at-loc-p pers)))

Получилось:

Обязательные аргументы в AT-LOC-P не совпадают с лямбда-списком (CCL :: FUNCNAME CCL :: LAMBDA-LIST & BODY CCL :: LABELS-FUNCTION-BODY).
[Условие типа CCL :: SIMPLE-PROGRAM-ERROR]

Я не совсем понимаю. Нужна помощь. спасибо.

8
задан Joshua Taylor 17 February 2015 в 17:52
поделиться