List 序言:递归获取所有列表元素
这里我有一个规则模块列表List 序言:递归获取所有列表元素,list,recursion,prolog,List,Recursion,Prolog,这里我有一个规则模块列表 module(oop). % Object Oriented Programming module(se1). % Software Engineering 1 module(se2). % Software Engineering 2 % etc. 然后,我为每个模块定义了先决条件 require(oop, []). % oop is base module. It doesn't require any other modules. require(se1, [o
module(oop). % Object Oriented Programming
module(se1). % Software Engineering 1
module(se2). % Software Engineering 2
% etc.
然后,我为每个模块定义了先决条件
require(oop, []). % oop is base module. It doesn't require any other modules.
require(se1, [oop]). % se1 requires oop
require(se2, [se1]). % se2 requires se1
如您所见,se2
需要se1(直接)和oop(间接)。
我想定义一个递归遍历列表的函数,并将所有需要的模块作为列表返回
查询:
?- dependent(se2, L).
预期结果:
L = [se1, oop]
如何使用递归在Prolog中编写依赖谓词
非常感谢您的帮助。使用交互递归的一种简单明了的方法:
dependent(X,L):- module(X), require(X,L1), find(L1,L).
find([],[]).
find([H|T],L):-dependent(H,L2),find(T,L3),append([H|L2],L3,L).
示例:
?- dependent(se2,L).
L = [se1, oop].
?- dependent(se1,L).
L = [oop].
?- dependent(oop,L).
L = [].
如何编写依赖函数
:Prolog没有函数,只有谓词。。。