gpt4 book ai didi

prolog - Prolog中的 ' and "有什么区别?

转载 作者:行者123 更新时间:2023-12-03 07:05:08 25 4
gpt4 key购买 nike

我是 Prolog 新手,注意到 ' 和 "给出了不同的行为,但很好奇为什么。具体来说,在加载文件时, ?- ['test1.pl']. 有效,而 ?- ["test1.pl"]. 则不然。

最佳答案

单引号项始终是原子。

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

<小时/>

原子 —值为 "a"= a。如今,这种方法已经很少使用了。但你会发现 Prolog 书籍中写有 ["abc.pl"]

<小时/>

代码 —字符代码列表。在较旧的系统中,这通常是默认值,但它会导致非常难以理解的答案,例如

?- set_prolog_flag(double_quotes,codes).   true.?- phrase(("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 之外的字符:

?- phrase(("Я твой ",("слуга"|"работник"),"!"), 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].
<小时/>

字符— 单字符原子列表。 See this了解更多相关信息。

?- set_prolog_flag(double_quotes,chars).   true.?- phrase(("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,!].?- phrase(("Я твой ",("слуга"|"работник"),"!"), Satz).   Satz = ['Я',' ',т,в,о,й,' ',с,л,у,г,а,!];  Satz = ['Я',' ',т,в,о,й,' ',р,а,б,о,т,н,и,к,!].

此表示法提供了更具可读性的答案,并且是 Scryer 中的默认表示法。 , Tau , Trealla ,和 Ichiban 。Scryer 和 Trealla 使用双引号表示法更紧凑地显示它们,用于打印任何单字符原子列表。对于 SICStusSWI这可以使用以下库进行模拟。

?- use_module(library(double_quotes)).   true.?- phrase(("Ja tvoi ",("sluga"|"rabotnik"),"!"), Satz).   Satz = "Ja tvoi sluga!";  Satz = "Ja tvoi rabotnik!".?- phrase(("Я твой ",("слуга"|"работник"),"!"), Satz).   Satz = "Я твой слуга!";  Satz = "Я твой работник!".

如果您在将 double_quotes.pl 安装为库时遇到困难,只需将其放入其他 Prolog 文件的目录中并输入:use_module(double_quotes)。

关于prolog - Prolog中的 ' and "有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8264699/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com