Я новичок в swi-прологе, поэтому в принципе я не знаю, как написать код ... в любом случае мне нужно написать предварительный курс о предварительных условиях курса.Он вернет список всех курсов, которые требуются.И вот мой код:
course(cmput325).
course(cmput175).
course(cmput201).
course(cmput204).
prerequisite(cmput204, cmput325).
prerequisite(cmput175, cmput201).
prerequisite(cmput175, cmput204).
/*required(+C,?L)*/
pre(X,C) :- prerequisite(X,C).
pre(X,C) :- prerequisite(X,Y), pre(Y,Z).
pre2(C,L) :- findall(L1,pre(L1,C),L).
required(C,L) :- sort(pre2(C,L1),L).
Я получил все правильно, кроме последнего требуемого (C, L), pre2 (cmput325, L) вернет [cmput204, cmput175], и я хочу отсортировать этосписок, так что он станет [cmput175, cmput204].Затем я попытался написать новый кандидат для решения этой проблемы.Однако, swi-prolog только что дал мне ошибку:
ERROR: Type error: `list' expected, found `pre2(cmput325,_3718)' (a
compound)
ERROR: In:
ERROR: [9] sort(pre2(cmput325,_3770),_3764)
ERROR: [8] required(cmput325,_3796) at c:/users/mxu3/desktop/a3.pl:19
ERROR: [7] <user>
Exception: (9) sort(pre2(cmput325, _3322), _3110) ? creep
Exception: (8) required(cmput325, _3110) ? creep
На данном этапе я понятия не имею, как решить эту проблему ... Может кто-нибудь сказать мне, где я должен поместить эту команду сортировки?Спасибо ....