2013-06-03 27 views

Trả lời

17

Đối nguyên tử:

 
?-  atom_concat ('my ', 'atom', X). 
X = 'my atom'. 

Đối chuỗi:

 
:-  set_prolog_flag (double_quotes , chars). 
:-  use_module (library(double_quotes)). 

?-  append ("my ", "string", X). 
X = "my string". 

Tôi đã mất một thời gian để tìm ra tên riêng. Có lẽ nó cũng sẽ giúp người khác.

+1

Bạn nên sử dụng 'string_concat/3' thay vì' append/3' cho chuỗi, như được giải thích trong câu trả lời của @KaitlinHipkin. – morxa

+1

@morxa: Tôi đã sử dụng sicstus prolog vào thời điểm đó. Vì vậy, một downvote là loại khắc nghiệt như không có chức năng như vậy trong phân phối prolog. :-) –

+0

câu trả lời cho thấy đây là cách tốt nhất cho tất cả các triển khai Prolog, bạn không bao giờ nói nó cho sicstus. Afaik, append/3 cũng không phải là ISO. Đặt double_quotes thành ký tự có thể phá vỡ các ứng dụng. Thậm chí nếu bạn không muốn sử dụng 'string_concat/3', thì sự kết hợp của' atom_string/2' và 'atom_concat/3' là tốt hơn. – morxa

2

Đây là một giải pháp đơn giản không vượt quá mọi thứ.

Để thêm nguyên tử, sử dụng atom_concat/3 ngữ:

A='my ', 
B='atom', 
atom_concat(A, B, FinalAtom). 

Để thêm chuỗi, sử dụng string_concat/3 ngữ:

A="my ",  % single quotes also work 
B="string", 
string_concat(A, B, FinalString) 

Cả hai liên kết đến các trang trên SWI chính thức -Prolog tài liệu trang web.

Các vấn đề liên quan