我对prolog很新。使用SICStus,当我对已经被查询过的文件进行更改时,SICStus无法识别这些更改。我唯一的办法是关闭窗口并重新启动它。但显然这是不实际的,因为每当你对文件进行更改时关闭窗口不仅令人讨厌而且浪费时间。我正在使用Windows版本的Sicstus 4.2.1。到目前为止,我已经尝试过命令consult(文件),重建(文件),编译(文件),但没有任何区别。在我关闭并打开窗口之前,SICStus会忽略所做的更改。
比如说,我有谓词测试/ 2。然后我删除了它并保存了文件。然后我输入重建(文件)。我的期望是SICStus会认识到所做的更改,并说谓词不存在。但它仍然存在,好像它存在。只有在我关闭窗口并重新开始之后才会正确地抱怨谓词不存在。
奇怪的是,它识别了一个新添加的谓词with reconsult(file),但如果它被更改或删除,则不会。
答案 0 :(得分:1)
init(): boolean{
/* your application logic */
return true;
}
canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean {
this.isAuthRequired = route.data.isAuthRequired;
this.isCompanyView = route.data.isCompanyView;
return this.init();
}
,public $num_rows;
public function __construct()
{
$this->num_rows = 6;
和consult/1
- 都是在1970年代 1 中首次定义的遗留内置函数。今天它们只是用于快速和脏的编译。这些构造的语义是(实际上仍然是),因此特定于实现,不可能就准备好标准化的干净语义达成一致。你指出了其中一个弱点。是的,一旦定义,您就不能隐含地取消定义谓词。使用SICStus'具体实现reconsult/1
以删除谓词。
通常,而是使用'.'/2
代替,因为这将检查文件修改日期是否已更改。使用此方法的更一般方法是发布make.
但请注意,某些更改未得到正确考虑。我仍然使用abolish/2
来重新加载更改的文件。
最简单的方法是使用模块,然后再次没有正确考虑界面中的更改,而是发出一些警告:
ensure_loaded/1
1我所知道的最早的文件是1978-09的DECsystem-10 Prolog的用户指南。带有勘误表的1978-10版本是here。