我知道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'.
謝謝。
我知道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'.
謝謝。
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])
a*1+2
@false謝謝,'writeq'肯定更有意義。我忘記了它甚至存在(上次我在22年前編寫Prolog的工作)。 – dasblinkenlight
@false我開始用'atom_codes/2 '因爲OP爲第一個參數傳遞一個原子,但是當我意識到OP使用'string_to_list/2'時編輯爲'string_codes/2'。你認爲'atom_codes/2'更合適嗎? – dasblinkenlight