如何在prolog中创建从函数名到函数项的映射

时间:2014-09-30 13:39:51

标签: dictionary prolog

我在Prolog中有我的数据库

abc1(1,2,3).
abc2(2,5,3).
abc3(3,2,7).
abc4(2,5,7).
abc5(5,2,3).
abc6(6,2,9).
abc7(7,4,3).

现在输入像

这样的输入列表
L=[abc1,abc2,abc3]
f(L,X) gives 

X表示abc1(X,Y,Z)的X,Y,Z列表,类似于abc2和abc3。 我无法做到这一点,基本上我想要给予abci相应的abci(X,Y,Z)。

1 个答案:

答案 0 :(得分:0)

首先你可以写一个谓词get_args / 2:

get_args(Name, [A,B,C]) :-
    call(Name, A, B, C).

现在你的函数f可以写成:

f(L, X) :-
    maplist(get_args, L, X).