1
삼각 아이덴티티에 대한 프롤로그 프로그램을 구현 중입니다. 이것은 프로그램의 일부입니다.이전 팩트의 변수에 결과가없는 경우 팩트를 실행하십시오.
simplify_exp(Term1+Term2,X,Y) :- isolaxt(Term1+Term2,Y),
(nonvar(Y)-> simplify_exp(Term1,X,Y), simplify_exp(Term2,X,Y)).
isolaxt(sin(U)^2+cos(U)^2,1).
나는 (isolaxt
만 실패한 경우) Y
값이없는 경우에만 if 문을 실행합니다. 비록 내가 포함하면 nonvar(Y)
그것은 작동하지 않았다. 어떻게 할 수 있습니까?
isolaxt 절에 수식이 포함되었습니다. ';'를 사용했지만 isolaxt가 true이면 simplify_exp를 실행할 필요가 없습니다. 내가 ';' isolaxt가 true이지만 simplify_exp도 실행됩니다. –
아니요, 그렇지 않습니다. 프롤로그에서,'; '를'p (A); 형태로 사용하여 논리적 분리 ("or")를 표현할 때. p (B)'이면,'p (A)'가 성공할 때'p (B)'는 실행되지 않습니다. 사실, q (A, B) : - p (A); p (B)'는'q (A, _) : - p (A) .'와'q (_, B) : - p (B) '두 개의 분리 된 절을 갖는 것과 완전히 동일합니다. – vmg
예. 그것은 작동합니다. 감사. –