Date 序言:为什么它在算术中不使用负值?

Date 序言:为什么它在算术中不使用负值?,date,math,time,prolog,difference,Date,Math,Time,Prolog,Difference,下面的代码用于计算两个日期之间的差异 timediff(Id, Days, Months, Years) :- book_in(Id, date(Y1, M1, D1)), book_due(Id, date(Y2, M2, D2)), Days is D1-D2, Months is M1-M2, Years is Y1-Y2. 然而,出于我的目的,我希望它能处理负数,例如,如果一本书提前提交,它将有一个负值表示它在到期日之前被退回,而一个正值表示它过

下面的代码用于计算两个日期之间的差异

timediff(Id, Days, Months, Years) :-
    book_in(Id, date(Y1, M1, D1)),
    book_due(Id, date(Y2, M2, D2)),
    Days is D1-D2,
    Months is M1-M2,
    Years is Y1-Y2.
然而,出于我的目的,我希望它能处理负数,例如,如果一本书提前提交,它将有一个负值表示它在到期日之前被退回,而一个正值表示它过期了。
是否有不同的方式来表达这一点,或者让Prolog处理负值

My bad,原来代码中的示例值是造成我混淆的原因:它们都会给出“不正确”的值,但是Prolog处理负数:?-X是2-5。X=-3。