2016-12-29 11 views
1

私はProlog組み込みの "string_to_list"を知っています。今私はその機能を逆にする必要があります。Prolog:string_to_listの逆関数

?- string_to_list('a*1+2', L). 
L = [97, 42, 49, 43, 50]. 

どうすればよいですか?組み込み関数はありますか? "望ましい機能"が何をするかは、大きな助けになります。

?- desiredfunction([97, 42, 49, 43, 50], R). 
R = 'a*1+2'. 

ありがとうございます。

+0

私はatom_codes 'で開始@Falseを/ 2 OPが 'string_to_list/2'を使用していることを認識したとき、OPは最初のパラメータのために原子を渡しているので、' string_code/2'に編集されています。あなたは 'atom_code/2'がもっと適切だと思いますか? – dasblinkenlight

答えて

4

string_to_list/2の代わりにstring_codes/2が推奨されています。

述語は双方向です。これは、リストをプラグインして、反対側に文字列を戻すことができることを意味します。

string_codes(R, [97, 42, 49, 43, 50]) 

いっそのこと、また、双方向であり、より広くPrologの実装の間でサポートされているatom_codes/2、使用:

atom_codes(R, [97, 42, 49, 43, 50]) 

This produces

a*1+2 
+0

@falseありがとう、 'writeq'は間違いなく理にかなっています。私はそれが存在していたことを忘れていました(私が前回仕事をしたときに書いたのは22年前です)。 – dasblinkenlight