我正在Prolog中编写一个任务调度程序。我有一组谓词,用于定义何时可以将任务视为可激活的,如下所示:
task(id01).
task(id02).
task(id03).
task(id04).
activable(X) :-
task(X),
inactive(X),
conditions1(X).
activable(X) :-
task(X),
inactive(X)
conditions2(X).
activable(X) :-
task(X),
inactive(X),
conditions3(X).
我想知道如何在激活任何可激活任务之前生成所有可激活任务的列表。我试过这样的事情:
handle_activable([A|As]) :-
activable(A),
handle_activable(As).
handle_activable([]).
schedule :-
handle_activable(As),
activate_all(As).
但是当我致电schedule/0
时,我总是会不断检查第一个任务,task(id01)
和第一个activable/1
子句目标。我知道这很愚蠢,但我找不到如何获得可激活任务的列表。更简单,如何生成任务列表......?