如何在 Prolog 中保留变量名?

How to preserve a variable name in Prolog?

我正在尝试编写一个程序来评估一个函数并对其进行一些操作。

dynamic evaluate/2.
begin :- writeln("Write your function"), read(Line),  
              assert((evaluate(X, Y) :- Y is Line)).

由于在 SWI-prolog 中变量名称更改为 _«number»,当我尝试调用 evaluate() 时,它不起作用。

有什么解决办法吗?

谢谢。

使用 read_term/2 (http://www.swi-prolog.org/pldoc/man?predicate=read_term/2) 和 variable_names 选项而不是 read(Line):

read_term(Line, [variable_names(['X'=X])])