1
У меня есть предикаты monthyear
, который возвращает текущий месяц, если месяц и год не указаны ниже.Условные в Прологе
monthyear(M,Y) :-
get_time(Stamp),
stamp_date_time(Stamp, DateTime, local),
date_time_value(month, DateTime, M),
date_time_value(year, DateTime, Y).
Если месяц и год поставляются возвращенный месяц и год. Для этого я написал следующий код ниже.
cal(X,Y,Z1,Z2):-
Z1 is X,
Z2 is Y.
cal(X,Y,Z1,Z2):-
X == null,
Y == null,
monthyear(Z1,Z2).
Однако я уверен, что этот код может быть улучшен, и я также столкнулся с ошибкой
ERROR: is/2: Arguments are not sufficiently instantiated
Как я могу идти о том, чтобы этой работе ?.
X=1,Y=2,cal(X,Y,Z1,Z2).
returns
Z1 = X
Z2 = Y
и
cal(X,Y,Z1,Z2).
returns
Z1 = 1,
Z2 = 2016
'== null'? Что значит «== null»? –
Кроме того, пожалуйста, укажите запрос и примеры. Мне немного непонятно, чего вы хотите достичь ... –
Это означает, что если значения X и Y не предоставляются родительским предикатом. –