Debugging 调试简单的Prolog函数
我试图在Prolog中编写我的on mod函数,签名为modulo(a,B,C),其中C相当于mod B。这是我的代码:Debugging 调试简单的Prolog函数,debugging,prolog,runtime-error,Debugging,Prolog,Runtime Error,我试图在Prolog中编写我的on mod函数,签名为modulo(a,B,C),其中C相当于mod B。这是我的代码: modulo(A,B,A) :- A<B. /* Not sure about this part.*/ modulo(A,B,C) :- A==C -> true ; A>C -> A1 is A-B, modulo(A1,B,C) ; false . 模(A,B,A):-A 符合
modulo(A,B,A) :- A<B. /* Not sure about this part.*/
modulo(A,B,C) :-
A==C ->
true ;
A>C ->
A1 is A-B,
modulo(A1,B,C) ;
false .
模(A,B,A):-A
符合事实的
A> C->
A1是A-B,
模(A1,B,C);
错误的
出于某种原因,当我运行此代码时,它会给我一个“参数没有充分实例化”错误。我对Prolog非常陌生,我想知道是否有人能帮我找出我做错了什么/如何修复它
任何帮助都将不胜感激!提前谢谢你 您似乎试图让Prolog谓词返回
true
或false
。Prolog不是这样工作的。谓词要么成功,要么失败。他们什么也不退
除此之外,您的代码很接近
您需要介绍的第一种情况是A
modulo(A,B,A) :- A < B.
modulo(A,B,C) :-
A >= B,
A1 is A - B,
modulo(A1,B,C).
就这样
请注意,我没有归还任何东西。我们只想说“这成功了吗?”
尝试
?-模(7,7,1)。
我得到否。
,但尝试?-模(7,2,1)。
我得到是。
Prolog没有函数。这可能是你的第一个错误。