#if-statement #prolog #return #operator-keyword #relational
#if-инструкция #prolog #Возврат #оператор-ключевое слово #реляционный
Вопрос:
Я пытаюсь написать простой код, подобный этому:
В псевдокоде:
function(x,y):
if y = 0:
return x
if x = 0:
return y
Я предполагаю, что я должен использовать sth как
function(X,Y,Return) :-
в качестве отправной точки и «если y = 0:» будет
y =:= 0.
но как мне вернуть X? Мне нужно присвоить его возвращаемой переменной, но как?
Редактировать: я думаю, что нашел это:
test(X,Y,Z) :-
( Y =:= 0 -> Z = X );
( X =:= 0 -> Z = Y ).
Ответ №1:
Это просто:
function(X, 0, X).
function(0, Y, Y).
В ответ на редактирование. Приведенное выше решение лучше, потому что оно проще, чем
function(X,Y,Z) :-
( Y =:= 0 -> Z = X );
( X =:= 0 -> Z = Y ).
и может использоваться в обратном направлении:
function(0, X, 3).
находит X
в одной версии, но не в другой.
Комментарии:
1. @HaiseSasaki Это работает некорректно:
function(1, 0, Return).
->false
.2. Я не понимаю, что это значит. Что именно является false?
3. @HaiseSasaki SWI-ответ Prolog. Другие прологи могут вместо этого сказать «Нет».