2

プロローグでの二次方程式の実装に問題がありました。私はいくつかの基本を知っていますが、同じ時点で swish.swi コンソールの出力を理解できません。私のエラーに関するあなたの側からの助けや提案をいただければ幸いです。

delta(A, B, C, D):- D is B*B - 4*A*C.

equation(A,B,C,X):- D1<0,delta(A,B,C,D1),X is 0. % or false... but how to retur false there?
equation(A,B,C,X):- D1 =:= 0,delta(A,B,C,D1),X is -B/2*A. 
equation(A,B,C,X): D1>0,delta(A,B,C,D1),X is -B-sqrt(D1)/2*A.
equation(A,B,C,X): D1>0,delta(A,B,C,D1),X is -B+sqrt(D1)/2*A.

実行後に2つのエラーが発生しますequation(2, 0, 1, X).

Full stop in clause-body?  Cannot redefine ,/2
</2: Arguments are not sufficiently instantiated
4

2 に答える 2