Пролог и выпуск списков - PullRequest
       2

Пролог и выпуск списков

1 голос
/ 28 февраля 2011

У меня проблема с маленькой программой, которую я сделал. Ниже часть с проблемой.

failed(X, C, Y) :- 
       registered_for(
            student(id(X),_,_,_,_,_),  
            course(name(C),year(Y),_),absences(A)), 
       A>2.

failed(X, C, Y) :- 
       grades(
            course(name(C),year(Y),_),
            student(id(X),_,_,_,_,_),_,normal(G),_,_), 
       G<5.

 count_failed(X, C, Y, N) :- 
       failed(X, C, Y), 
       append(L, C, L), 
       length(_,L,N).

Первые 2 строки работают как положено. Проблема где-то в последнем. Я хочу добавить C в список L, но все, что я получаю, это "ОШИБКА: Out of global stack". Я использую SWI-пролог.

При необходимости я могу опубликовать оставшуюся часть кода. Заранее спасибо за ваше время и усилия :) 1006 *

1 Ответ

2 голосов
/ 28 февраля 2011

Не могли бы вы использовать findall для составления списка? Причиной стекового потока, вероятно, является добавление (L, C, L), поскольку L никогда не объединяется ни с чем внутри этого предложения.

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