Common Lisp中的“无效的EXCL :: PREDICATE参数”错误

时间:2010-12-19 18:30:13

标签: lisp common-lisp allegro-cl

我正在LISP做课堂练习,我收到了这个错误

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

你能告诉我这是什么意思吗?我将粘贴代码给出错误,但它很长而且很难看。

它应该在马德里的地铁网络中找到跟随给定站点的站点,ESTACION是站点的名称,CAMBIO-ESTACION是描述短传输的列表(格式:(L01 Sol L02 Tribunal)),VIAS是描述订单的列表地铁线路中的车站(格式(l01 Sol Opera 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 个答案:

答案 0 :(得分:2)

您需要粘贴回溯。

但是当我读到它时,错误基本上说Lisp期望一个谓词,它得到了一些类型的矢量数据。

通常这是因为一些参数处于错误的位置。

答案 1 :(得分:2)

第一个函数,作为if表达式的else分支,你有

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

我怀疑你想要

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

即,缺少单引号。