Как смоделировать 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
,