2012-01-10 2 views
2

나는 (나에게) 다소 이상한 문제를 발견했다.프롤로그 산술 플러스

매우 쉽게, 2 정수 사이의 추가를 원합니다. 나는 (I 그래프에서 계산 뭔가를 해요)

plus(LatestTime,LengthPath,TimeArrive), 

TimeArrive 변수가 대신 대답의 물리적 주소이 작업을 수행 할 때 지금 swi

에서 플러스 절을 사용합니다. 는 지금은 다른 절을

myPlus(Var1,Var2,Result):- 
    Result is Var1 + Var2. 

를 만들려고 그리고 여기에 같은, 그래서

LatestTime,LengthPath 

그러나 제 2 개 입력 변수에 문제가 믿고 시작하고 한 때 'write'그들에게 물리 주소 대신에 정수를 받는다.

실마리가 있습니까? 내가 생각을 못해서 :)

+1

내가했습니다 TimeArrive는 LatestTime + LengthPath입니다. 그래도 프롤로그가 정수 대신 실제 주소를 부여한 이유는 알 수 없습니다. – Christophe

+1

무엇이 잘못 되었는지를 추측하기는 어렵습니다. 코드, 나는 if-structure가 관련되어 있거나 일부 부작용이 있다고 생각하지만 myPlus를 대체하는 방법을 볼 수는 없지만/3 수정 됨 –

+0

"phys ical address "? –

답변

1

가능한 한 정수 값 사이의 관계를 표현하는 데 사용하십시오! 일반적으로

, 나는 그것이 대신 모든 정수 계산 "가역적"(is)/2을 통해 일반 된 프롤로그를 arithmetics 고려해야 --- 아니라 사람을 "를 사용하는 것이 가장 좋은 방법입니다 생각합니다.