2016-12-29 11 views
1

我知道Prolog-builtin「string_to_list」。現在我需要改變它的功能。序言: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

@false我開始用'atom_codes/2 '因爲OP爲第一個參數傳遞一個原子,但是當我意識到OP使用'string_to_list/2'時編輯爲'string_codes/2'。你認爲'atom_codes/2'更合適嗎? – dasblinkenlight

回答

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 
+0

@false謝謝,'writeq'肯定更有意義。我忘記了它甚至存在(上次我在22年前編寫Prolog的工作)。 – dasblinkenlight