Próbuję dowiedzieć się, jak łączyć dwa atomy:Jak połączyć dwa atomy/łańcuchy?
A = 'my ',
B = 'atom',
Jak mogę łączyć te dwa atomy tak, że wynik jest:
'my atom'
?
Próbuję dowiedzieć się, jak łączyć dwa atomy:Jak połączyć dwa atomy/łańcuchy?
A = 'my ',
B = 'atom',
Jak mogę łączyć te dwa atomy tak, że wynik jest:
'my atom'
?
Dla atomy:
?- atom_concat ('my ', 'atom', X). X = 'my atom'.
Dla strings:
:- set_prolog_flag (double_quotes , chars). :- use_module (library(double_quotes)). ?- append ("my ", "string", X). X = "my string".
Zajęło mi trochę czasu, aby znaleźć odpowiednie nazwy. Może to też pomoże innym.
Oto proste rozwiązanie, które nie powoduje komplikacji.
Aby dołączyć atomy, użyj atom_concat/3 predykat:
A='my ',
B='atom',
atom_concat(A, B, FinalAtom).
Aby dołączyć ciągi, użyj string_concat/3 predykat:
A="my ", % single quotes also work
B="string",
string_concat(A, B, FinalString)
oba linki przejść do stron na oficjalnej SWI - strona dokumentacji Prolog.
Powinieneś użyć 'string_concat/3' zamiast' append/3' dla łańcuchów, jak wyjaśniono w odpowiedzi @KaitlinHipkin. – morxa
@morxa: Użyłem pric sicstus w tym czasie. Tak więc upadek jest dość trudny, ponieważ nie ma takiej funkcji w dystrybucji prologu. :-) –
Odpowiedź sugeruje, że jest to najlepsza metoda dla wszystkich implementacji Prolog, nigdy nie mówisz, że to dla sicstus. Afaik, append/3 również nie jest ISO. Ustawienie double_quotes na znaki może przerwać aplikacje. Nawet jeśli nie chcesz używać 'string_concat/3', imho kombinacja' atom_string/2' i 'atom_concat/3' jest lepsza. – morxa