有没有关于Prolog语言(语法和语义)的在线描述? 有很多实现的参考手册,但这些都不是语言描述。例如,《SWI Prolog手册》中声明: “本手册未描述Prolog的全部语法和语义。” 还提到了一套在上世纪80年代出版的纸质书籍以及用于货币交易的ISO标准,“应该从我国的ISO代表处...
在Prolog中,管道操作符返回一个或多个原子头和一个尾部列表。 ?- [a,b,c] = [a,b|[c]]. true. 在单个匹配中嵌套多个管道可以像这样实现: ?- [a,b,c] = [a|[b|[c]]]. true. 声明 [a|b|c] 意味着什么,关于 a、b 和...
我有这个跟踪元解释器,改编自之前的问题Prolog unbind bound variable。 我不明白如何解释剪枝符号。感谢用户@false告诉我剪枝符号实现得很糟糕,我的问题是,我应该如何在这个元解释器中实现剪枝符号? %tracer mi_trace(Goal):- mi_...
是否有Prolog语言的文法或类似于它的东西,通常用作参考?我正在使用SWI-Prolog,因此最好有针对该版本的文法,否则一般的Prolog语言文法/规范也可以。
Hilog术语(即具有任意项作为函数符合的化合物)在XSB Prolog(或任何其他Prolog)中,仍被认为是一种强大的功能吗?目前有许多使用此功能的XSB项目吗?例如哪些项目? 我问这个问题,因为据我所知,使用ISO内置的call/N同样可以进行高阶编程。 具体来说,我想了解XSB是否...
这个Prolog程序会输出Hello。 main :- write('Hello'), nl. :- main. 我将 (:-)/1 改为 (?-)/1: main :- write('Hello'), nl. ?- main. 这将产生完全相同的结果。这也会打...
样例程序枚举并计算8皇后问题的解法数量。(如果代码难以阅读,很抱歉;这是从S表达式机器生成的。原始代码在https://www.cpp.edu/~jrfisher/www/prolog_tutorial/2_11.html)。 规则: [user]. (perm([X|Y],Z) :- ...
我曾经吃过亏,发现在SWI-Prolog中,在源代码文件中使用Prolog指令set_prolog_flag时,位置很重要。 关于加载带有指令的源代码文件,我找到的唯一有价值的文档是Loading Prolog source files。 指令是编译器的指令。指令用于设置(谓词)属性(参...
术语的正确使用是传达概念成功的一部分,当在SO上使用Prolog标签时使用错误的术语时,答复者会很好地指出错误。 阅读William F. Clocksin在1997年撰写的《Clause and Effect-Prolog Programming for the Working Progr...