Ошибка «Неверный аргумент EXCL :: PREDICATE» в Common Lisp - PullRequest
0 голосов
/ 19 декабря 2010

Я делаю упражнения в классе в LISP, и я получаю эту ошибку

CG-USER(286): 
Error: Invalid EXCL::PREDICATE argument:
       #<Vector @ #x20fd488a>
[condition type: SIMPLE-ERROR]

Не могли бы вы сказать мне, что это должно означать? Я вставлю код с сообщением об ошибке, но он длинный и безобразный.

Он должен найти станции, следующие за данной, в мадридской сети метро, ​​являясь ESTACION названием станции, CAMBIO-ESTACION - списком, описывающим короткие передачи (формат: (L01 Sol L02 Tribunal)), VIAS - списком, описывающим порядок. станций в линиях метро (формат (101 Sol Sol 1.01)). Некоторые станции сломаны (те, что в AVERIADAS), и я должен найти закрытые станции (в прыжках PROFUNDIDAD-VECINOS).

Очевидно, я не ожидаю, что вы будете отлаживать мой код (это очень уродливый код для чтения), но было бы здорово, если бы кто-нибудь мог сказать мне, что эта ошибка должна означать. Спасибо.

Вот код:

Это выполнение с ошибкой:

CG-USER(286): (estaciones-cercanas-a 'Noviciado *vias* *cambio-estacion* 2 '(Sol Callao Noviciado Santo_Domingo PLAZA_DE_ESPAÑA SAN_BERNARDO RETIRO))
Error: Invalid EXCL::PREDICATE argument:
       #<Vector @ #x20fd488a>
[condition type: SIMPLE-ERROR]

И это успешное выполнение:

CG-USER(288): (estaciones-cercanas-a 'Noviciado *vias* *cambio-estacion*)
(SANTO_DOMINGO SAN_BERNARDO PLAZA_DE_ESPAÑA)

Ответы [ 2 ]

2 голосов
/ 19 декабря 2010

Первая функция, в качестве ветви else выражения if, у вас есть

        (remove-duplicates
          (remove-if #(lambda(x)(eq x estacion))
          ...

Я подозреваю, что вы хотите

        (remove-duplicates
          (remove-if #'(lambda(x)(eq x estacion))
          ...

Т.е. отсутствует одна кавычка.

2 голосов
/ 19 декабря 2010

Вам нужно будет вставить обратную трассировку.

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

Как правило, это будетпотому что некоторые аргументы находятся в неправильной позиции.

...