gpt4 book ai didi

c# - C# 的 SWI PROLOG 问题

转载 作者:太空宇宙 更新时间:2023-11-03 10:44:30 24 4
gpt4 key购买 nike

我想为 C# 使用 SWI PROLOG 包装器。我的 friend 在普通 SWI PROLOG 的序言中创建了一些代码。我想使用 SwiPLCs.dll 在 c# 中执行此操作。我想将他的代码作为我的知识库。

我在看演示代码。他们像这样传递序言行:

PlQuery.PlCall("assert(father(martin, inka))");

我 friend 的代码是这样的:

:-  dynamic(releases/4),dynamic(preserve/3).
neg(X,Y) :- sneg(Y,X).
neg(X,Y) :- sneg(X,Y).
neg(X,X) :- !,fail.
inertial(X) :- sinertial(X).
inertial(X) :- neg(X,Y),
sinertial(Y).

它更长,但我只粘贴了几行。我用这个调用包装了所有行:PlQuery.PlCall("assert(line_of_code)");

在第一行我得到了这个异常:

assert/2: Uninstantiated argument expected, found dynamic preserve/3 (2-nd argument)

在第 4 行我得到了这个异常:

Syntax error: Operator expected\nassert(neg(X,X) :- !,fai\n** here **\nl.\r

我做错了什么?我只想执行一些固定代码来初始化我的序言引擎。我可以像普通序言代码一样简单地执行它,然后使用这个包装器的功能吗?

最佳答案

您可以尝试添加更多括号:

PlQuery.PlCall("assert((line_of_code))");

这应该可以解决您的一些问题。

但是如果引擎可以访问源文件,那么查阅它就更简单了

PlQuery.PlCall("consult('"+file_path+"')");

关于c# - C# 的 SWI PROLOG 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23985966/

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