Prolog列表

时间:2012-05-08 16:48:00

标签: prolog

我正在学习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.

1 个答案:

答案 0 :(得分:3)

也许你的意思是

prerequisites(A, []) :- not(prereq(A, _)).
prerequisites(A, [C|B]) :- prereq(A, C), prerequisites(C, B).

您必须确保数据中没有循环才能使其正常工作......