2013-06-03 24 views

回答

17

对于原子

 
?-  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". 

我花了一段时间才能找到合适的名字。也许它也会帮助别人。

+1

您应该使用'string_concat/3'而不是'append/3'作为字符串,正如@KaitlinHipkin的回答中所解释的。 – morxa

+1

@morxa:当时我使用了sicstus prolog。所以downvote有点苛刻,因为prolog分布中没有这样的功能。 :-) –

+0

答案表明这是所有Prolog实现的最佳方式,你从不会说它是为了sicstus。 Afaik,追加/ 3也不是ISO。将double_quotes设置为字符可能会破坏应用程序。即使你不想使用'string_concat/3',imho中'atom_string/2'和'atom_concat/3'的组合更好。 – morxa

2

这是一个简单的解决方案,不会过分复杂。

要追加原子,使用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页-Prolog文档网站。