Debugging 调试简单的Prolog函数

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 符合

我试图在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 符合事实的 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没有函数。这可能是你的第一个错误。