8得票2回答
如何在Prolog中从几个模块中使用具有相同名称的谓词

我是一名新手,正在使用SWI-Prolog解决以下问题。我有几个文件dataBase1.pl,dataBase2.pl等,它们具有相同的结构(基于此线程)。请帮我翻译。 :- module(dataBase1,[]). :- use_module(library(persistency))...

8得票5回答
流推理/反应式编程在Prolog中的应用?

我想知道是否有任何方法可以使用Prolog进行流处理,也就是说,一种响应式编程方式,或者至少让查询在不断更新(有效地成为一个流)的知识库上运行,并持续输出推理结果? 是否有任何在流行的“Prologs”(如SWI-Prolog)中实现的方法?

8得票3回答
如何在不按空格键的情况下查看SWI-Prolog中的所有答案?

简单示例: ?- between(1,10,X). X = 1 ; X = 2 ; X = 3 ; X = 4 ; X = 5 ; X = 6 ; X = 7 ; X = 8 ; X = 9 ; X = 10. 当使用SWI-Prolog并使用REPL查看下一个答案时,需要按下空格键。 ...

7得票1回答
在swi-prolog和yap中结果不同

样例程序枚举并计算8皇后问题的解法数量。(如果代码难以阅读,很抱歉;这是从S表达式机器生成的。原始代码在https://www.cpp.edu/~jrfisher/www/prolog_tutorial/2_11.html)。 规则: [user]. (perm([X|Y],Z) :- ...

7得票4回答
在SWI-Prolog中定义运算符,包括竖线(|)

我正在尝试在Prolog中编码基本的逻辑推理,并希望定义一些自定义运算符来简化表示法。如果我可以键入|-来表示⊢就很方便了。所以我尝试了以下代码: :- op(1150, xfy, [ '|-' ]). gamma |- a. Gamma |- or(A,_) :- Gamma |- A. ...

7得票1回答
Prolog中的`shift`/`reset`操作与其他编程语言有何相似之处?

我在这里找到了一个有关Haskell中的shift-reset限定延续的示例(链接): resetT $ do alfa bravo x <- shiftT $ \esc -> do charlie lift $ esc 1 ...

7得票2回答
Prolog中的随机项

我知道可以使用X is random(10)来获取0到10之间的随机数,但是是否有类似的命令可以获取随机匹配项?

7得票3回答
使用本地服务器为程序提供基于浏览器的图形用户界面会带来哪些安全风险?

我正在构建一个相对简单的程序来收集和排序用户输入的数据。我想使用通过Web浏览器运行的本地服务器,有两个原因: HTML表单是收集所需输入的简单有效的方式。 我希望能够离线运行程序,而不必管理访问远程服务器涉及的安全风险。 编辑: 为了澄清,我的意思是该应用程序只能从本地网络访问,而不...

7得票3回答
Prolog列表成员,返回多个结果

我有一个确定列表成员的标准流程: member(X, [X|_]). member(X, [_|T]) :- member(X, T). 我不理解的是,当我提出以下查询时: ?- member(a,[a,b]). 结果是。 True; False. 我本以为当第一个规...

7得票1回答
从标准输入解析

我该如何解析标准输入(无缓冲)? 如果我理解正确,phrase/2需要一个列表,而library(pure_input)中的phrase_from_file/2需要一个文件。 我通过使用常规谓词(而不是 DCG)和使用内置谓词,如get_char/2和read_line_to_codes/2...