2013-07-24 3 views
1

jpl이 다중 프롤로그 vms를 지원하지 않기 때문에 Prolog 파일을 모듈로 참조하려고합니다. swipl 콘솔에서jpl에서 모듈로 파일을 참조하는 방법

, 나는이 성공적으로 자바에서

?- consult(mod1:'data/load.pro') . 

(물론, 실제로 스칼라,하지만 그들은 JVM의 상단에 있습니다), 나는 파일을 참조 할 수 있습니다 직접 w/O를 같이 뭔가를 할 수 문제가

scala> import jpl._ 

scala> val q = new Query("consult", Array[Term](new Atom("data/load.pl"))) 

scala> q.query() 
... 
true 

그러나 내가 모듈로 파일을 참조하려고했을 때, 나는 항상 예외를 얻는다.

scala> val q = new Query("consult", Array[Term](new Atom("mod1:data/load.pl"))) 

scala> q.query() 
    jpl.PrologExcepion: PrologException: error(existence_error(source_sink, 'mod1:data/load.pl'), _0) 
    at jpl.Query.get1(Query.java:336) 
    at jpl.Query.hasMoreSolutions(Query.java:258) 
    at jpl.Query.oneSolution(Query.java:688) 
    at jpl.Query.query(Query.java:747) 
    at .<init>(<console>:15) 
    at .<clinit>(<console>) 
    .... 

jpl의 모듈로 프롤로그 파일을 참조하는 올바른 방법을 알려줄 수 있습니까? 감사!

답변

1

난 당신이 술어에 모듈 자격을 교환, 당신은 소스 파일의 전체 경로에 전달할 수 있도록 할 물론 수 있다고 생각 :

val q = new Query("mod1:consult('full_path_to/load.pl')") 
+0

불행하게도,이 작동하지 않습니다, 나는 얻었다 예외, "jpl.JPLException : Term.putParams : 공식보다 더 많은 실제 매개 변수". 지금까지는 쿼리에 대한 문자열 인수로 직접 프롤로그 구문을 넣습니다. 새 쿼리 ("consult (mod1 : 'data/load.pro')") – Sheng

+0

새 쿼리 ("mod1 : consult ('data/load.pro') ")'? – CapelliC

+0

네, 작동합니다 :-) – Sheng

관련 문제