Dictionary 如何在prolog中实现从函数名到函数项的映射

Dictionary 如何在prolog中实现从函数名到函数项的映射,dictionary,prolog,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 对于abc1X,Y,Z,类似于abc2和abc3,X是X,Y,Z的列表。 我无法做到这一点,基本上我想要给定abci对应的abciX,Y,Z。首先你可以写一个谓词get_args/2: get_

我在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 
对于abc1X,Y,Z,类似于abc2和abc3,X是X,Y,Z的列表。
我无法做到这一点,基本上我想要给定abci对应的abciX,Y,Z。

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

get_args(Name, [A,B,C]) :-
    call(Name, A, B, C).
现在您的函数f可以写入:

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