【发布时间】:2013-03-29 15:53:20
【问题描述】:
所以这周包括我安装 Logtalk,Prolog 的扩展之一。在这种情况下,我使用的是 Prolog SWI,但遇到了一些障碍。我不确定如何使用 Logtalk 实际咨询我自己的项目。为了理解代码本身,我查看了 Logtalk 附带的示例,并且这样做我已经能够加载它们并完美地执行它们。但我不明白的是 logtalk 加载文件时实际发生了什么,以及如何加载我自己的项目。
我将以“hello_world”示例作为讨论重点。名为 hello_world 的文件位于 Logtalk 文件的示例文件夹中。然而它的咨询是这样的:
| ?- logtalk_load(hello_world(loader)).
我想到的第一件事是“这是一个仿函数”,使用跟踪查看它在做什么,我发现它是从库中调用的,并被告知如何进入示例文件夹,然后打开它“hello_world”文件夹,然后是“loader”文件。之后正常编译。
我看了看图书馆,不知道发生了什么。我还认为这不可能是在 Logtalk 中加载用户创建的项目的实用途径。还有另一篇帖子询问如何使用 SWI 进行此操作,但没有任何回复,看起来也没有做出任何努力来解决问题。
现在让我明确一点,我可以使用“咨询('...')”。命令很好,我什至可以使用“咨询”来打开我的项目,但是如果我这样做,logtalk 控制台似乎没有使用任何 logtalk 扩展,所以只是 vanilla prolog。我已经使用 Windows 安装程序来安装 logtalk,并且我知道它可以正常工作,因为我一直在查看它附带的示例。
我试图找到一个教程,但很难找到任何关于 Logtalk 的内容,我找到的最多的是这个关于从你的项目中加载的文档:
logtalk_load/1.
logtalk_load/2.
我是这样理解的:
logtalk_load(file). % Top level loading
logtalk_load(folder(file). % Bottom level loading
因此,每次我都会有一个加载程序文件来加载我的项目的其他组件(这就是 Logtalk 的示例所做的),因此为了节省大量的手动加载。这一点对我来说很有意义,我认为,我如何获取我的加载程序文件,没有。
我是否正确理解它还有待观察,但即使我理解正确,我仍然不知道如何加载自己的项目。感谢您提供的任何帮助,如果您能举一个最好的例子,因为我很快就会从例子中学习。
小更新
您问我是否使用 logtalk 控制台来运行我的程序,而我正在使用在“QUICK_START”文件 [开始 > 程序 > Logtalk > “Logtalk - Prolog -SWI (console)"] 我想仔细检查一下 logtalk 插件是否正常工作并测试了 "birds" 示例,因为它使用对象并且是一个很好的熟悉示例。再一次,使用 logtalk_load/2 函子时一切正常。
鉴于目前给出的反馈,我进一步查看了库路径所指的内容。研究 logtalk 如何加载文件。设置为到目前为止,没有改变任何事情 logtalk 咨询一个文件夹,其中包含一个名为 libpaths 的 prolog 文件。它基本上是如何找到示例的,它只是从何处获取文件的部分描述。所以当我说“logtalk_load/2”时,至少我会去这个文件并找到我想要的文件夹。
现在,由于我已经将自己的项目文件夹放在了示例文件夹中,因此我立即将自己的文件夹添加到列表中,以测试这是否至少是帮助我理解更多内容的部分解决方案。我在 libpaths.pl 文件中添加了以下内容。
logtalk_library_path(my_project, examples('my_project/')).
% The path must end in a / so I have done so
所以,我已经声明了我的文件夹路径,得到了我的文件夹,并且加载程序文件是我在使用加载程序时将调用的文件。不用考虑设置我自己的 lib 路径文件夹,我应该有足够的东西让事情正常工作并做一些实际的学习。但很遗憾,我的调查似乎失败了,我收到了以下信息:
ERROR: Unhandled exception: existence_error(library,project_aim)
不是我想看到的,我又回到了这个库错误业务。我在某处缺少对我的项目文件夹的引用,但我不知道它还需要在哪里引用。对此事进行跟踪并没有帮助我只是发生了以下情况:
Call: (17) logtalk_library_path(my_project, _G943) ? creep
Fail: (17) logtalk_library_path(my_project, _G943) ? creep
ERROR: Unhandled exception: existence_error(library,my_project)
呼叫失败,我根本找不到 logtalk 正在寻找的参考。当涉及到这些问题时,我充其量只是个新手,我现在使用计算机仅 3 年,过去 2 年在 Visual Studio 中使用 c# 和 c++ 进行编程。至少我对这件事有了更多的了解,根据这些信息有什么更有用的建议吗?
【问题讨论】:
标签: loading swi-prolog logtalk