Пролог - список CharCodes в строку или символы
у меня есть список кодов символов в prolog.
Я хотел бы изменить их в символы.
например,
L = "abc"
возвращает L = [97,98,99]
предполагая, что я начну с L = [97,98,99]
есть ли в любом случае, чтобы преобразовать L обратно в abc, так что, если существует метод
convert(L, X)
возвращает X = abc
спасибо.
3 ответов
дано L="abc", convert(L, X), X = abc
Я бы сказал, что вы хотите сделать атом (см. описание типов данных) из строки пролога.
Я думаю, вы хотите atom_codes/2
или что-то подобное. Он должен работать как L="abc", atom_codes(X, L).
по данным док.
к сожалению, в настоящее время у меня нет SWI-Prolog в моей системе. Но вот YAP, которая содержит atom_codes/2
YAP 6.3.2 (x86_64-linux): Sat Sep 1 08:24:15 EEST 2012
MYDDAS version MYDDAS-0.9.1
?- L="abc", atom_codes(X,L).
L = [97,98,99],
X = abc
Не забывайте также, что если вам нужно вывести строку, вам это не нужно быть преобразованным в атом. См.формат / 2 в SWI (или в YAP)
?- L="abc", format("~s~n", [L]).
abc
L = [97,98,99]
использовать char_code(?Atom, ?ASCII)
в списке карт.
char_code(?Атом ?ASCII) преобразование между символом и значением ASCII для один символ. (16)