Как смоделировать atom_to_term(+Atom, -Term, -Bindings) SWI-Пролога в SICStus Prolog?

Я использую SICStus Prolog для написания агента Dali, и мне нужно преобразовать атом в термин, но я не могу использовать atom_to_term который встроен в SWI-Пролог

1 ответ

Решение

Использование 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,

Другие вопросы по тегам