如何在SWI Prolog中解构一个复合词

时间:2015-12-03 08:44:09

标签: prolog term destructuring

我的复合词可以在大括号内有一个数字。

例如:qpowieipq(5),lsjdlasa(15)lkjlk。我是从数据库中获得的(如my_list([rxclk,rxer,rxdv,rxd(0),rxd(1),rxd(2),crs,col,txen,txd(0),txd(1),txd(2),‌​txd(3)]).)。

如何获取大括号内的数字值?

例如:

my_function(qpowieipq(5), X).
X=5.
my_function(lsjdlasa(15), X).
X=15.
my_function(lkjlk, X).
false

我正在使用SWI Prolog。

1 个答案:

答案 0 :(得分:2)

您可以使用(=..)/2和模式匹配来解构Prolog的复合词。例如

?- a =.. X.
X = [a].

?- a(1) =.. X.
X = [a, 1].

所以,暂时

my_function(T, V) :- T =.. [_,V], number(V).

这适用于任何符合ISO标准的Prolog处理器。