Если я вас правильно понял, это невозможно. Вы должны установить в своем правиле owes_money(bob, 500, 0, 3).
точную дату, когда Боб заберет деньги, а затем сравнить их с сегодняшней датой.
Для получения точной даты взгляните на этот предикат: get_time(-Time)
. А также для борьбы со временем вы можете использовать:
convert_time(+Time, -String)
convert_time(+Time, -Year, -Month, -Day, -Hour, -Minute, -Second, -MilliSeconds)
Я все еще не уверен, что это не домашнее задание, и я немного боюсь дать вам решение из коробки.
Быстрое решение - изменить предикат owes_money
следующим образом:
owes_money(bob, 500, 0, 2010, 3, 10). %2010 for the year, 3 for the month ...
Затем сравните эту дату с текущей датой:
get_time(X), convert_time(X, CurrYear, CurrMonth, CurrDay, _, _, _, _).%CurrYear will give you current year, etc ... . You don't need the hour minutes etc .. that's why are the _
Теперь осталось сравнить CurrYear, CurrMonth и CurrDay с тем, что вы получаете из предиката owes_money, и посмотреть, сколько дней прошло.
Надеюсь, это полезно!