Prolog:string_to_list的反向功能

时间:2016-12-29 15:50:14

标签: prolog

我知道Prolog-builtin“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'.

谢谢。

1 个答案:

答案 0 :(得分:4)

不推荐使用

string_to_list/2,而是string_codes/2

谓词是双向,这意味着您可以插入一个列表,并在另一侧返回一个字符串。

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

更好的是,使用atom_codes/2,这也是双向的,并且在Prolog实现中得到更广泛的支持:

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

This produces

a*1+2