2013-06-03 42 views

Odpowiedz

17

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.

+1

Powinieneś użyć 'string_concat/3' zamiast' append/3' dla łańcuchów, jak wyjaśniono w odpowiedzi @KaitlinHipkin. – morxa

+1

@morxa: Użyłem pric sicstus w tym czasie. Tak więc upadek jest dość trudny, ponieważ nie ma takiej funkcji w dystrybucji prologu. :-) –

+0

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

2

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.