问题标签 [gnu-prolog]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - 从 C 单独调用 (GNU) Prolog 的示例
我想基于使用 Prolog 谓词的 C 文件构建可执行文件。我想使用 GNU Prolog。
我成功(基于gnu prolog教程)构建了examp_c.c,examp.pl:
编译使用
调用可执行示例时,启动/模拟 Prolog 解释器:
但我想要的是有一个 C 程序在内部调用 Prolog,而不通过 Prolog 解释器与用户进行通信。Prolog 谓词应该作为 C 程序的/内部的参数提交,或者是内部生成的。
你知道这方面的例子吗?还是我误解了什么,这不可能吗?
你看,我刚开始是新手......我很乐意得到一些帮助:-) 非常感谢提前。
c - 在 C 接口中从 Prolog 获取列表元素
我尝试使用基于 GNU Prolog 的 Prolog 脚本来实现 C 接口。我的问题是获取嵌套 Prolog 列表的单个元素。
实际上我的 C 代码看起来像
arg[2] 中返回的 Prolog 列表看起来像
转换成字符串的输出是
所以我假设,我“快到了”,但由于我必须重新激活我的 C 知识,我没有得到解决方案如何输入列表的下一级以最终将每个元素作为字符串(“Spezial Bolognese”,下一步:“2”、“Zwiebeln”等)。
如何逐步浏览 C 中的 Prolog 列表?
对于每一个提示,我都会非常高兴,再次感谢您!
java - GNU Prolog Java 没有成功
我正在尝试通过 Java 与 GNU 解释器一起使用 Prolog,但我遇到了一个大问题。
如果对变量进行查询,我总是会返回变量的名称。
所以这里有一些代码:
此代码在 GNU Prolog 控制台和 SWIPL 中运行良好,但在 Java 中
长度的结果是“长度”。所以我认为内存中没有保存真正的结果。如果我尝试类似if (rc == PrologCode.SUCCESS || rc == PrologCode.SUCCESS_LAST)
并捕获 NoAnswerException,则会引发异常。我能做些什么?我试图从几个小时开始解决这个问题。请帮助:)
debugging - gprolog:异常后获取堆栈跟踪
在使用gprolog 时,我经常遇到没有任何类型的行号或上下文的异常,例如:
没有任何上下文。我知道我可以做,trace
但是调试它需要很长时间,trace
因为在到达错误发生的地方之前我需要执行很多事情。
关于如何拥有这个堆栈跟踪的任何想法?还是动态trace
/ notrace
?
编辑:或者只是自动打印整个trace
输出。
linux - 在 GNU-Prolog 中,我可以“捕捉”一个 linux 信号吗?
有没有办法在 GNU Prolog 中“捕获”(例如“捕获”)操作系统信号?(我使用的是 Ubuntu/Linux,最新的 gprolog)。
我想很久以前我在 WAMCC 中使用过这种方法,在它演变成 GNU Prolog 之前:
但是,如果我使用(重复,失败)无限循环来测试这个,例如
在解释器中,Ctrl-C 仍然将我带到跟踪/调试器,如果我用 等中断编译程序,它就会kill -1
退出kill -2
。
我已经尝试编译程序--no-top-level
以防默认顶层以某种方式捕获信号,但这没有任何区别。
SWI-Prolog 似乎有一个合适的内置谓词on_signal
可以达到目的,但如果可能的话,我正在寻找带有 gprolog 的解决方案。
prolog - 如何在 GNU Prolog 中定义一个虚拟/占位符谓词
我有一个具有以下结构的 Prolog 文件:
该文件的用户数据旨在允许用户扩展,但默认情况下不包含任何内容。但是,这会导致查询foo(X).
失败,因为bar/1
并且baz/1
未定义。
我尝试使用占位符值(即bar(none).
)定义它们,但是当用户数据添加到文件底部时,GNU Prolog 抱怨谓词不连续。
是否有另一种方法来定义和的虚拟/占位符版本,bar/1
这样baz/1
就foo(X).
不会失败,并且其他包含bar
并且baz
可以添加到文件底部的行?
c - Compile GTK with GPLC
Trying to compile a C GTK gui + Prolog file using GPLC. I read that I can pass multiple flags to the gcc compiler from GPLC by using-C 'gcc flags here'
Ok so I can comiple my GUI alone with
However this will not work in GPLC because I would have
This means I won't get the response from pkg-config
as I am seeking because it is inside a "string". How can I fix that?
Lastly if I do something ugly like:
I get compilation failure during linking due to all references to GTK functions being undefined. why?
prolog - 我怎样才能改变数独的大小
我有一个脚本来解决大小= 9 * 9 的数独我有 81 个变量,我为它们定义了规则,
如何更改此代码以解决任何大小的数独?例如对于 16*16 的数独,规则将适用于 4*4 的子方格。
go(L) :-
L=[A1,A2,A3,A4,A5,A6,A7,A8,A9,
B1,B2,B3,B4,B5,B6,B7,B8,B9,
C1,C2,C3,C4,C5,C6,C7,C8,C9,
D1,D2,D3,D4,D5,D6,D7,D8,D9,
E1,E2,E3,E4,E5,E6,E7,E8,E9,
F1,F2,F3,F4,F5,F6,F7,F8,F9,
G1,G2,G3,G4,G5,G6,G7,G8,G9,
H1,H2,H3,H4,H5,H6,H7,H8,H9,
I1,I2,I3,I4,I5,I6,I7,I8,I9],
fd_domain(L,1,9),
我应该写另一个脚本还是我可以改变这个?谢谢,
macos - 如何在 macOS Sierra 上运行 gprolog
我刚刚使用brew install gnu-prolog
. 当我尝试gprolog
在终端中运行时,我得到gprolog: command not found
. 我尝试对运行 ElCapitan 的另一台机器做同样的事情,一切都运行良好。
有没有办法让我开始gprolog
为 macOS Sierra 工作?