Почему предикат length / 2 в прологе может создавать бесконечное число длин? - PullRequest
0 голосов
/ 09 ноября 2018

Когда я применяю этот запрос:

? длина (P, _).

P = [] ? ;

P = [_] ? ;

P = [_,_] ? ;

P = [_,_,_] ? ;

P = [_,_,_,_] ?

У меня есть такой результат. Как это работает?

1 Ответ

0 голосов
/ 09 ноября 2018

Через пункты выбора.Как только предикат имеет более одного предложения, создается примерно точка выбора:

length([], 0).
length([_|L], M) :- length(L, N), M is N+1.

Эти точки выбора дают различные интерпретации интерпретатором Пролога.Вот скриншот деривации в Tau Prolog песочница :

enter image description here

Подожди, я думаю, мне нужно поднять выпуск , этот скриншот деривации показывает слишком много.Синтетический (=) / 2 и контроль (,) / 2.

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