добавить базовое предложение в пролог рекурсивного предиката - PullRequest
0 голосов
/ 14 января 2019

У меня есть рекурсивный предикат, который застревает в бесконечном цикле и завершает работу программы. предикат, который кажется застрявшим в цикле, выглядит следующим образом

parts(sentence(_,VP), P) :-
   parts(VP, P).
parts(vp(V), P) :- parts(V, P).
parts(vp(verb(V), np,( np2,( np2(noun(N)))), [likes(V), what(N)])).

Я ввожу R = sentence(np(np(det(an), np2(adj(old), np2(noun(father))))), vp(vp(verb(likes), np(det(a), np2(adj(good), np2(noun(book))))))), чтобы получить вывод verb(likes) и noun(book)

Я читал на некоторых страницах, что мне может понадобиться добавить базовый регистр в цикл, чтобы предотвратить его постоянную форму, однако я не уверен, как реализовать его в коде.

Я просто бродил, как мне поступить с этим предикатом? Есть ли функция end, которую я мог бы добавить к счетчику, который завершит функцию и перейдет к следующему шагу?

...