Я пытаюсь выяснить, как сцепить два атома:Как объединить два атома/струны?
A = 'my ',
B = 'atom',
Как я могу объединить эти два атома, так что результат:
'my atom'
?
Я пытаюсь выяснить, как сцепить два атома:Как объединить два атома/струны?
A = 'my ',
B = 'atom',
Как я могу объединить эти два атома, так что результат:
'my atom'
?
Для атомов:
?- atom_concat ('my ', 'atom', X). X = 'my atom'.
Для струны:
:- set_prolog_flag (double_quotes , chars). :- use_module (library(double_quotes)). ?- append ("my ", "string", X). X = "my string".
Это мне потребовалось некоторое время, чтобы найти правильные имена. Может быть, это тоже поможет другим.
Это простое решение, которое не слишком усложняет ситуацию.
Для добавления атомов, используйте atom_concat/3 предикат:
A='my ',
B='atom',
atom_concat(A, B, FinalAtom).
Для добавления строк, используйте string_concat/3 предикат:
A="my ", % single quotes also work
B="string",
string_concat(A, B, FinalString)
Обе ссылки идут на страницы официального SWI -Прологическая документация.
Вы должны использовать 'string_concat/3' вместо' append/3' для строк, как описано в ответе @KaitlinHipkin. – morxa
@morxa: Я использовал пролог sicstus в то время. Таким образом, нисходящее движение является довольно суровым, поскольку в прологовом распределении нет такой функции. :-) –
ответ подсказывает, что это лучший способ для всех реализаций Prolog, вы никогда не говорите, что это для сикстуса. Afaik, append/3 также не является ISO. Установка double_quotes в символы может нарушать приложения. Даже если вы не хотите использовать 'string_concat/3', лучше использовать комбинацию' atom_string/2' и 'atom_concat/3'. – morxa