是否有一种解决方法可以使 ensure_loaded/1 在 B-Prolog 中像在许多其他 Prolog 系统中一样工作?目标是有一个序言,以便其余代码可以使用 ensure_loaded/1 而与我使用的 Prolog 系统无关。
- 似乎它不像许多 Prolog 系统那样解析当前查询文件的相对路径。
- 似乎它不允许 Prolog 文本,但需要一些字节码,这将迫使我编译东西。
所以我尝试了以下方法:
:- set_prolog_flag(redefine_builtin, on).
ensure_loaded(X) :-
atom_concat('<base>\\',X,Y),
consult(Y).
:- set_prolog_flag(redefine_builtin, off).
但是,当咨询带有以下指令的 Prolog 文本时,我将无法工作:
:- ensure_loaded('suite.p').
它仍然没有找到suite.p。
我能做什么?
再见