Prolog 如何保存到列表和写入变量名

Prolog 如何保存到列表和写入变量名,prolog,swi-prolog,Prolog,Swi Prolog,我需要实现谓词 项变量 我需要得到一个术语并返回一个变量列表(每个变量只返回一次) 对于每个新变量,我检查它是否是列表的成员,如果不是,则将变量名添加到列表中 我的问题是,当我在列表中保存变量时,它被保存为_g474,我需要将它保存为变量名X 有没有办法得到变量名 谢谢 我的代码: term_variables(Term) :- Term=..L, term_variables(L, []). term_variables([X| Xs], Vars):- compo

我需要实现谓词

项变量

我需要得到一个术语并返回一个变量列表(每个变量只返回一次)

对于每个新变量,我检查它是否是列表的成员,如果不是,则将变量名添加到列表中

我的问题是,当我在列表中保存变量时,它被保存为_g474,我需要将它保存为变量名X

有没有办法得到变量名

谢谢


我的代码:

term_variables(Term) :-
   Term=..L,
   term_variables(L, []).

term_variables([X| Xs], Vars):-
      compound(X),
      X=..L,
      term_variables(L, Vars)
   ;   
      var(X),
      not(member(X, Vars)),
      write(X),
      term_variables(Xs, [X|Vars])
   ;   
      term_variables(Xs, Vars).
term_variables([], _,).

多年来,
term_variables/2
是SWI中的内置谓词。所以你不能重新定义它。要么你正在使用一个非常旧的版本,要么…我不想重新定义它,我只需要实现它。。。它需要有不同的名称。多年来,
term_variables/2
是SWI中的内置谓词。所以你不能重新定义它。要么你正在使用一个非常旧的版本,要么…我不想重新定义它,我只需要实现它。。。它需要有一个不同的名称。