Prolog:将术语转换为字符串?
Prolog: Cast term into string?
我有一个 Prolog 程序,它生成这种形式的项:
:-op(803, xfy, →).
connect(X, Y, Result):-
Result = (X → Y).
如果我现在调用 connect(a,b,R) 我的结果是 R = (a→b).
他们是否有可能将 (a→b) 之类的术语转换为 Prolog 中的字符串?
背景:我想使用 Python 中的结果。但是,如果我使用 swiplserver 或 pyswip 传输它,我会得到这种终端:→(a, b)
。我希望通过这样的类型转换来解决这个问题。
在SWI-Prolog中,可以使用谓词term_string/2如下:
?- connect(a, b, T), term_string(T, S).
T = (a→b),
S = "a→b".
或者,您也可以使用 term_to_atom/2 or format/3:
?- connect(a, b, T), term_to_atom(T, A).
T = (a→b),
A = 'a→b'.
?- connect(a, b, T), format(string(S), '~w', T).
T = (a→b),
S = "a→b".
?- connect(a, b, T), format(atom(A), '~w', T).
T = (a→b),
A = 'a→b'.
我有一个 Prolog 程序,它生成这种形式的项:
:-op(803, xfy, →).
connect(X, Y, Result):-
Result = (X → Y).
如果我现在调用 connect(a,b,R) 我的结果是 R = (a→b).
他们是否有可能将 (a→b) 之类的术语转换为 Prolog 中的字符串?
背景:我想使用 Python 中的结果。但是,如果我使用 swiplserver 或 pyswip 传输它,我会得到这种终端:→(a, b)
。我希望通过这样的类型转换来解决这个问题。
在SWI-Prolog中,可以使用谓词term_string/2如下:
?- connect(a, b, T), term_string(T, S).
T = (a→b),
S = "a→b".
或者,您也可以使用 term_to_atom/2 or format/3:
?- connect(a, b, T), term_to_atom(T, A).
T = (a→b),
A = 'a→b'.
?- connect(a, b, T), format(string(S), '~w', T).
T = (a→b),
S = "a→b".
?- connect(a, b, T), format(atom(A), '~w', T).
T = (a→b),
A = 'a→b'.