我正在学习rooPlog并且在列表方面遇到了一些麻烦。我想返回一个类列表,这些类是指定类的先决条件。这是我到目前为止所拥有的......
prereq(262, 221).
prereq(271, 262).
prereq(331, 271).
prerequisites(A, B) :- not(prereq(A, C)).
prerequisites(A, [C|B]) :- prereq(A, C), prerequisites(C, B).
它有效,但将垃圾贴在最后。
?- prerequisites(331, A).
A = [271, 262, 221|_G327] ;
false.
答案 0 :(得分:3)
也许你的意思是
prerequisites(A, []) :- not(prereq(A, _)).
prerequisites(A, [C|B]) :- prereq(A, C), prerequisites(C, B).
您必须确保数据中没有循环才能使其正常工作......