2010-12-19 4 views
0

"잘못된 EXCL :: 술어 인수"커먼 리스프의 오류, 나는내가 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

당신은 역 추적을 붙여해야합니다.

그러나 내가 읽었을 때, 오류는 기본적으로 Lisp이 술어를 예상 할 때 어떤 종류의 벡터 데이터가 있다고 말합니다.

일반적으로 이는 일부 인수가 잘못된 위치에 있기 때문에 발생합니다.

+0

내가 얻는 backtraces는 정말로 길다. 내가 그것을 고칠 수 없으면 나는 짧은 것을 얻으려고 노력할 것이다. 당신의 설명이 이해가가는 것처럼 보입니다. 감사. – jesusiniesta

+0

고정! 고마워요! 이전 기능에서의 실수였습니다. – jesusiniesta

2

첫 번째 함수는 if 식의 다른 지점으로, 당신은

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

이 당신이

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

즉, 작은 따옴표가없는

을 원하는 생각한다.

+0

관련성이 있는지는 모르겠지만 고정되어 있습니다. 감사! – jesusiniesta

+0

맞아, 그게 오류 야. 따옴표가 없으면 우리는 벡터를 얻습니다. 좋은 캐치. –

관련 문제