1

使用 atom_chars 时出现以下错误

 9 ?- atom_chars(9abc,X).
 ERROR: Syntax error: Operator expected
 ERROR: atom_chars(9
 ERROR: ** here **
 ERROR: abc,X) .

谁能解释为什么会发生这个错误?我需要一个可以将 abc、910、abc910、910abc 等各种输入转换为字符列表的谓词。对于这种情况,有什么可以替代 atom_chars 的吗?谢谢。

4

1 回答 1

2

你应该用引号将你的原子括起来:

?- atom_chars('9abc',X).

大约,当 Prolog 原子具有 C 标识符“形状”时,它们可以不带引号,但以小写字符开头(大写名称引入变量)。用单引号包围你会很安全。要知道一个原子是否需要单引号才能安全读取,您可以使用类似

shape_to_read(Atom) :- format('~q', [Atom]).

编辑或更简单的writeq /1

shape_to_read(Atom) :- writeq(Atom).
于 2013-02-05T10:16:00.780 回答