2016-12-29 3 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

@false Я начал с 'atom_codes/2 'потому что OP передает атом для первого параметра, но редактируется до' string_codes/2', когда я понял, что OP использует 'string_to_list/2'. Считаете ли вы, что 'atom_codes/2' более уместен? – dasblinkenlight

ответ

4

string_to_list/2 устарел в пользу string_codes/2.

Предикат двунаправленный, что означает, что вы можете подключить список и получить строку обратно с другой стороны.

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

еще лучше, использовать atom_codes/2, который также является двунаправленным, и более широкую поддержку среди реализаций Пролога:

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

This produces

a*1+2 
+0

@false Спасибо, 'writeq' определенно имеет больше смысла. Я забыл, что он даже существовал (в последний раз я написал Prolog для работы 22 года назад). – dasblinkenlight