gpt4 book ai didi

module - SICStus 的 make/0 功能

转载 作者:行者123 更新时间:2023-12-01 08:26:09 25 4
gpt4 key购买 nike

如何确保所有模块(以及理想情况下已加载或包含的所有其他文件)都是最新的?发布时use_module(mymodule) , SICStus 比较文件的修改日期mymodule.pl并重新加载它,如果更新。还有include -ed 文件将触发重新编译。但它不会重新检查 mymodule 使用的所有模块。 .

简而言之,我怎样才能获得与 SWI 提供的 make/0 类似的功能? ?

最佳答案

SICStus Prolog 中没有任何东西可以提供这种功能。

一个大问题是当前的 Prolog 过于动态,以至于 make/0 之类的东西无法可靠地工作,除非是非常简单的情况。使用术语扩展、加载期间执行的目标(包括常见的文件加载目标)等功能,不可能知道如何可靠地重新加载文件。我没有仔细看过它,但大概是 SWI Prolog 中的 make/0 也有同样的问题。

我通常只是重新启动 Prolog 进程并再次加载“主”文件,即加载我需要的所有内容的文件。

PS。我无法在评论中获得代码格式,所以我把它放在这里:示例为什么 make/0 需要防范 'user' 作为来自 current_module/2 的文件:

| ?- [user].
% compiling user...
| :- module(m,[p/0]). p. end_of_file.

% module m imported into user
% compiled user in module m, 0 msec 752 bytes
yes
| ?- current_module(M, F), F==user.
F = user,
M = m ? ;
no
| ?-

关于module - SICStus 的 make/0 功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34558948/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com