使用 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 的吗?谢谢。
使用 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 的吗?谢谢。
你应该用单引号将你的原子括起来:
?- atom_chars('9abc',X).
大约,当 Prolog 原子具有 C 标识符“形状”时,它们可以不带引号,但以小写字符开头(大写名称引入变量)。用单引号包围你会很安全。要知道一个原子是否需要单引号才能安全读取,您可以使用类似
shape_to_read(Atom) :- format('~q', [Atom]).
编辑或更简单的writeq /1
shape_to_read(Atom) :- writeq(Atom).