Prolog:将术语转换为字符串?

发布于 2025-01-17 06:30:48 字数 328 浏览 0 评论 0原文

我有一个 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)。我希望通过这样的类型转换来解决这个问题。

I have a Prolog program, which generates terms of this form:

:-op(803, xfy, →).

connect(X, Y, Result):-
    Result = (X → Y).

if I now call connect(a,b,R) my result is R = (a→b). Is their a possibility to convert terms like (a→b) into a string within Prolog?

Background: I want to work with the results in Python. But if I transfer it with swiplserver or pyswip I get termini of this kind: →(a, b). My hope is to solve that problem with such a typecast.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

大海や 2025-01-24 06:30:48

在 SWI-Prolog 中,您可以使用谓词 term_string/2如下:

?- connect(a, b, T), term_string(T, S).
T =  (a→b),
S = "a→b". 

或者,您也可以使用 term_to_atom/2format/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'.

In SWI-Prolog, you can use predicate term_string/2 as follows:

?- connect(a, b, T), term_string(T, S).
T =  (a→b),
S = "a→b". 

Alternatively, you can also use 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'.
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文