Возврат значения из if-инструкции в Prolog

#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. Другие прологи могут вместо этого сказать «Нет».