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' を持ち、小文字で始まる場合、引用符なしで立つことができます (大文字の名前は変数を導入します)。一重引用符で囲むと安全です。アトムが安全に読み取られるために一重引用符が必要かどうかを知るには、次のようなものを使用できます

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

editまたはより単純なwriteq /1

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