2012-01-26 4 views
0

리스트를 'recives'하는 hasRepetition을 쓰려고하는데, 반복이있는 경우에만 true를 리턴합니다.리스트에서 반복 체크하기 - 프롤로그

다음과 같이 작성했습니다. hasRepetition ([Head | Tail]) : - member (Head, Tail); hasRepetition (Tail).

7? hasRepetition ([1,1]). 오류 : 최상위 : 정의되지 않은 프로 시저 : hasRepetition/1 (DWIM이 목표를 수정할 수 없음)

답변

3

프로 시저 정의가 정상입니다.

코드를 잊어 버린 것 같습니다. 즉, consult(name). 여기서 name은 코드가있는 파일의 이름입니다.

1

나는 @gusbro가 이미 당신에게 대답 (+1)을 주었다고 생각합니다. 그러나 당신이 작성한 절차는 '매우 비효율적입니다.

먼저 멤버 대신 memberchk/2를 사용해야합니다. 그런 다음, 분리 전에 절단을하십시오. 그렇지 않으면 코드가 매우 느려질 것입니다. 예를 들어, findall 내에서 역 추적을 요청하면