Почему эти два прологичных кода дают разные результаты? - PullRequest
0 голосов
/ 30 апреля 2018
call((append(As,Bs,[1,2,3,4]),writeq(user,append(As,Bs,[1,2,3,4])))).

Результат:

append([],[1,2,3,4],[1,2,3,4])
As = [],
Bs = [1,2,3,4] ? ;
append([1],[2,3,4],[1,2,3,4])
As = [1],
Bs = [2,3,4] ? ;
append([1,2],[3,4],[1,2,3,4])
As = [1,2],
Bs = [3,4] ? ;
append([1,2,3],[4],[1,2,3,4])
As = [1,2,3],
Bs = [4] ? ;
append([1,2,3,4],[],[1,2,3,4])
As = [1,2,3,4],
Bs = [] ? ;
no

Но если я попробую это:

 call((append(As,Bs,[1,2,3,4]) -> writeq(append(As,Bs,[1,2,3,4])) ; writeq('There are no solutions.\n'))).

Это возвращает это:

append([],[1,2,3,4],[1,2,3,4])
As = [],
Bs = [1,2,3,4] ? ;
no

В чем разница? Я пытаюсь написать так, чтобы он мог определить, есть ли 0 решений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...