在Prolog中,“和”有什么区别?

我是Prolog的新手,注意到“和”给出了不同的行为,但是为什么好奇呢,特别是当加载一个文件的时候, ?- ['test1.pl'].工作,而?- ["test1.pl"].不。

单引号项目总是primefaces。

双引号的含义取决于Prolog标志double_quotes


atom – 与这个值"a" = a 。 如今,这很less被使用。 但是你会发现Prolog的书籍里有["abc.pl"]


codes – 字符代码列表。 这通常是默认的,但是会导致非常难以理解的答案

 set_prolog_flag(double_quotes,codes)。
真正。

 ((“Ja tvoi”,(“sluga”|“rabotnik”),“!”),Satz)。
 Satz = [74,97,32,116,118,111,105,32,115,108,117,103,97,33];
 Satz = [74,97,32,116,118,111,105,32,114,97,98,111,116,110,105,107,33]。

更糟的是,如果你使用ASCII以外的字符:

 ? - 短语((“Ятвой”,(“слуга”|“работник”),“!”),Satz)。
 Satz = [1071,32,1090,1074,1086,1081,32,1089,1083,1091,1075,1072,33];
 Satz = [1071,32,1090,1074,1086,1081,32,1088,1072,1073,1086,1090,1085,1080,1082,33]。

chars – 一个字符的primefaces列表。 看到这个更多关于它。

 set_prolog_flag(double_quotes,chars)。
真正。

 ((“Ja tvoi”,(“sluga”|“rabotnik”),“!”),Satz)。
 Satz = ['J',a,'',t,v,o,i,'',s,l,u,g,a,!];
 Satz = ['J',a,'',t,v,o,i,'',r,a,b,o,t,n,i,k,!]。

 ? - 短语((“Ятвой”,(“слуга”|“работник”),“!”),Satz)。
 Satz = ['Я','',т,в,о,©,'',с,л,у,г,а,!];
 Satz = ['Я','',т,в,о,©,'',р,а,б,о,т,н,и,к,!]。

这个符号给出了更多可读的答案。 它可以更紧凑地显示,因为双引号符号可以用于打印单字符primefaces的任何列表。 有SICStus和SWI的 library(double_quotes)

 ? - use_module(library(double_quotes))。
真正。

 ((“Ja tvoi”,(“sluga”|“rabotnik”),“!”),Satz)。
 Satz =“Ja tvoi sluga!”  ;
 Satz =“Ja tvoi rabotnik!”

 ? - 短语((“Ятвой”,(“слуга”|“работник”),“!”),Satz)。
 Satz =“Ятвойслуга!”  ;
 Satz =“Ятвойработник!”。

如果将double_quotes.pl作为库安装时double_quotes.pl困难,只需将其放到其他Prolog文件的目录中,然后说: use_module(double_quotes).

序言中的string用单引号引起来。 用双引号写的术语会立即转换为字符代码列表。

 ?- write('sdf'). sdf true. ?- write("sdf"). [115, 100, 102] true.