如何在SICStus Prolog中模拟SWI-Prolog的atom_to_term(+ Atom,-Term,-Bindings)?

时间:2013-11-23 17:46:37

标签: prolog sicstus-prolog

我正在使用SICStus Prolog编写Dali代理,我需要将一个原子转换为一个术语,但我不能使用内置于SWI-Prolog中的atom_to_term

1 个答案:

答案 0 :(得分:4)

使用library(codesio)

| ?- use_module(library(codesio)).
yes
?- set_prolog_flag(double_quotes,codes).
true.
| ?- read_from_codes("a(X,Y).",T).     

T = a(_A,_B) ? yes
| ?- read_term_from_codes("a(X,Y).",T,[variable_names(VN_list)]).
T = a(_A,_B),
VN_list = ['X'=_A,'Y'=_B] ?

除此之外,还需要atom_codes/2,即ISO。

对于更复杂的操作,您可以使用open_codes_stream/2打开流。需要使用close/1关闭哪个。