我已经获得了一个大型的程序文件集合,我想在64位Linux下使用7.2 Swi-prolog设置。其中大多数报告
import/1: No permission to import clpfd:transpose/2 into user (already imported from ugraphs)
错误,由当前版本引起的命名冲突导致默认情况下加载ugraphs并在用户实际指定的模块上选择它的新行为,这是我所知道的。
我希望Prolog更喜欢明确使用的模块而不是默认值。如果做不到这一点,我想自定义默认加载的模块列表。
其他答案建议从use_module中排除所需的谓词,然后将其与显式名称空间一起使用。由于文件的具体情况,这不具有宏功能(转置有时用于ugraphs上下文,在文件中描述的谓词的名称或作为文本输出和注释的一部分)。如果可能的话,我宁愿避免走这条路。
答案 0 :(得分:0)
默认情况下,SWI-Prolog autoload
标志设置为true
。您的帖子中没有足够的详细信息,但您可以尝试将其设置为false
。这将阻止任何模块的自动加载。即任何使用过的模块都需要明确加载。这将为您提供对可能需要为您的应用程序编写(或更新)加载程序文件所需加载的模块的完全控制。