我有一個 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). 我希望通過這種型別轉換來解決這個問題。
uj5u.com熱心網友回復:
在 SWI-Prolog 中,您可以使用謂詞term_string/2如下:
?- connect(a, b, T), term_string(T, S).
T = (a→b),
S = "a→b".
或者,您也可以使用term_to_atom/2或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'.
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/451052.html
