«Invalid excust :: Предикатный аргумент» в общей плате
-
11-10-2019 - |
Вопрос
Я делаю классную комнату в LISP, и получаю эту ошибку
CG-USER(286):
Error: Invalid EXCL::PREDICATE argument:
#<Vector @ #x20fd488a>
[condition type: SIMPLE-ERROR]
Не могли бы вы сказать мне, что это должно означать? Я вставлю код, давая ошибку, но он долгий и уродливый.
Он должен найти станции, следующие за данным, в сети Метро Мадрида, будучи эстрадным названием станции, в Списке Камбио-Эстациона А, описывающий короткие переводы (формат: (L01 Sol L02 Трибунал)), в списке, описывающих порядок станций. в линиях метро (формат (L01 Sol Opera 1.01)). Есть некоторые станции, сломанные (те, которые в Авериасах), и я должен найти закрытые станции (в прыжках с плюндидад-веки).
Очевидно, я не ожидаю, что вы отлаживаете мой код (это много уродливого кода для чтения), но было бы здорово, если бы кто -то мог сказать мне, что это означает ошибка. Спасибо.
Вот код:
Это выполнение с ошибкой:
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)
Решение
Вам нужно будет вставить обратную связь.
Но, как я читаю, ошибка в основном говорит, что, где LISP ожидал предиката, она получила какие -то данные вектора.
Как правило, это было бы потому, что некоторые аргументы находятся в неправильной позиции.
Другие советы
Первая функция, как ветвь if
выражение, у вас есть
(remove-duplicates
(remove-if #(lambda(x)(eq x estacion))
...
Я подозреваю, что ты хочешь
(remove-duplicates
(remove-if #'(lambda(x)(eq x estacion))
...
Т.е. не хватает одной цитаты.