如何选择默认使用的 SWI-Prolog 模块?
How can SWI-Prolog's modules used by default be chosen?
我得到了一大堆旧的程序文件,我想在 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 上下文,谓词的名称在文件中描述或作为文本输出和注释的一部分)。如果可能的话,我宁愿避免走这条路。
SWI-Prolog autoload
标志默认设置为 true
。您的 post 中没有足够的详细信息,但您可以尝试将其设置为 false
。这将阻止任何模块的自动加载。 IE。任何使用过的模块都需要显式加载。这将使您能够完全控制哪些模块最有可能需要为您的应用程序编写(或更新)加载程序文件。
我得到了一大堆旧的程序文件,我想在 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 上下文,谓词的名称在文件中描述或作为文本输出和注释的一部分)。如果可能的话,我宁愿避免走这条路。
SWI-Prolog autoload
标志默认设置为 true
。您的 post 中没有足够的详细信息,但您可以尝试将其设置为 false
。这将阻止任何模块的自动加载。 IE。任何使用过的模块都需要显式加载。这将使您能够完全控制哪些模块最有可能需要为您的应用程序编写(或更新)加载程序文件。