2013-06-22 7 views
1

JPL을 사용하고 있으며 일부 쿼리를 Swi-Prolog에 시작합니다. 프로그램은 모든 쿼리와 함께 작동하지만 문제가 없습니다.JPL 및 명령 줄에서 쿼리가 작동하지만 쿼리가 작동하지 않습니다.

이 쿼리가 작동하지 않습니다 :

assert(like(X, Y) :- element(I, [1, 2, 3], X), element(I, [2, 3, 4], Y)). 

예외 스레드에서 "주요"jpl.PrologException : PrologException : '.'. '오류 (uninstantiation_error (요소 (_3 (2, (3,' (2)],) (2-nd 인수)))

쿼리를 .pl에 넣으면 fle (단언없이, obvisously) 및 컨설팅과 함께 실행, 잘 작동합니다! 그러나 콘솔 모드에서 쿼리를 입력하면 JPL과 같은 오류가 반환됩니다. 그래서 문제가 어디에 있습니까?

답변

1

조명을 얻기가 아주 가까이 있습니다. 그것은 콘솔에서 작동하지 않습니다! 그런 다음 구문을 변경하려고합니다. (X, Y) : 요소 (I, [1, 2, 3], X), 요소 (I, [2, 3, 4]), (I, [2,3,4] , Y))).

그리고 작동합니다!

문제는 연산자 (: -)/2 WRT 연산자 (,)/2의 우선 순위입니다.

+0

글쎄! 2 개의 괄호만으로 작동합니다 ....하지만 이유는 모르겠습니다. 문제는 인수의 수 또는 나쁜 연산자 (: -)/2 연산자를 사용하는 것입니다. 3 가지 인수로 ... 더 괄호를 추가해야합니까? – user840718

+0

Prolog는 다음과 같은 연산자를 사용합니다. - 또는, 구성 가능한 구문으로 용어로 설탕 - 또는 그 이상 - 구조체. 그리고 괄호를 더 추가 할 필요가 없습니다. 단지 두 명이 모든 표현을 a로 만들 것입니다 : - b, c, d 'fitting'in – CapelliC

관련 문제