在prolog

时间:2015-10-04 08:56:02

标签: prolog

我想在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)

1 个答案:

答案 0 :(得分:0)

如果您使用的是SWI-Prolog,则有with_output_to/2format/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