我想在atom_chars/2
的表达上使用3+4
,但我得到了
ERROR: atom_chars/2: Type error: 'atom' expected, found '3+4' (a compound)
。
我在想,如果我可以在化合物的两侧添加" "
,它会起作用,例如
atom_chars("3+4", Result).
但我不知道如何做到这一点,还是有其他方法可以做到这一点? 请给我一些建议。
编辑:我的意思是输入必须是3+4
,而不是'3+4'
,所以我想做的是在atom_chars / 2之前编写一个谓词来转换{{1转到3+4
。
例如:'3+4'
,
compound2atom(X,Y)
答案 0 :(得分:0)
如果您使用的是SWI-Prolog,则有with_output_to/2
或format/3
:
?- with_output_to(atom(A), write(3+4)).
A = '3+4'.
?- with_output_to(chars(C), write(3+4)).
C = ['3', +, '4'].
?- format(atom(A), "~w", [3+4]).
A = '3+4'.
?- format(chars(C), "~w", [3+4]).
C = ['3', +, '4'].
但如果你看起来足够努力,你应该能够找到一些这样做的谓词,例如term_to_atom/2
。
我的个人偏好倾向于format/3
。