0

我正在使用 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)
4

2 回答 2

2

您需要粘贴回溯。

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

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

于 2010-12-19T19:00:11.373 回答
2

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

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

我怀疑你想要

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

即,缺少单引号。

于 2010-12-19T19:11:59.857 回答