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

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 に答える
2

バックトレースを貼り付ける必要があります。

しかし、私がそれを読んだとき、エラーは基本的にLispが述語を期待していた場所で、何らかのベクトルデータを取得したことを示しています。

通常、これはいくつかの引数が間違った位置にあるためです。

于 2010-12-19T19:00:11.373 に答える