Module 有Prolog的包管理器吗?
我想知道与其他程序员(以及自己在多个项目之间)共享Prolog代码/库的最佳实践是什么。我自己也在使用SWI Prolog,但也对其他Prolog如何解决这个问题感兴趣 相比之下,Java有Maven+JAR,Python有EasyInstall+Pythonegs,其他语言可能也有很多其他的。但是Prolog还有其他的吗 SWI序言包 在SWI Prolog中,有模块Module 有Prolog的包管理器吗?,module,prolog,git-submodules,swi-prolog,package-managers,Module,Prolog,Git Submodules,Swi Prolog,Package Managers,我想知道与其他程序员(以及自己在多个项目之间)共享Prolog代码/库的最佳实践是什么。我自己也在使用SWI Prolog,但也对其他Prolog如何解决这个问题感兴趣 相比之下,Java有Maven+JAR,Python有EasyInstall+Pythonegs,其他语言可能也有很多其他的。但是Prolog还有其他的吗 SWI序言包 在SWI Prolog中,有模块库(Prolog\u pack)支持的包。这些措施的缺点是: 您必须为每个包创建归档文件或Git存储库。假设我想创建10个包。现
库(Prolog\u pack)
支持的包。这些措施的缺点是:
我对其他Prolog程序员使用和思考这个主题非常感兴趣 我想这样一个简单的遍历算法可以给你 模块的集合(如果已注释) 属于包的那些模块和那些模块 还不属于某个包的。它会屈服的 模块的一个子集,它还不属于 包裹 但我觉得这没有抓住重点。我 认为软件包的软件工程有不同的定义 目标不仅仅是交付一个包。通常是一个 面临多个包和这些包 可以具有根于依赖项的依赖项 模块本身的安全性 数学上:
M: The set of modules
P: The set of packages
p(m): The package a module belongs to or null.
因此,如果我有模块依赖项,我可以派生
来自it的包依赖项:
d(m1,m2): The module m1 depends on the module m2
d'(p1,p2): The package p1 depends on the package p2
d'(p1,p2) <=> exists m1,m2 (p(m1)=p1 & p(m2)=p2 & d(m1,m2))
如果安装并激活的软件包
模块clpfd命令将成功执行。如果
未安装此类软件包或已安装软件包
如果尚未激活,则命令将失败。这个
模块clpfd将分别使用的主包
其他模块和软件包。如果它使用
一个模块本地到它自己的包,它可以做
因此,无需使用库/1:
?- use_module(helper).
?- use_module(library(apply)).
但是如果它使用的模块不是本地的
它自己的软件包通常会有不同的做法。
例如,模块clpfd可能使用模块
申请。它将通过library/1实现这一点:
?- use_module(helper).
?- use_module(library(apply)).
现在我们意识到我们不会知道
通过检查clpfd或辅助模块
它将从它将要使用的位置执行上述操作
应用模块。我们只知道包的依赖性
当我们在
当我们解析模块名称时,应用
它的包装
这种灵活性有其利弊。骗局