clips - 调用 CLIPS 操作 modify 导致系统挂起
问题描述
我正在通过调用(修改)操作来修改模板化事实,但这会导致 CLIPS 挂起。
规则:
(deffunction reset-allowed-values "Resets allowed values"
; no argument
($?arg)
(if (eq (any-factp ((?fact model1)) TRUE) TRUE)
then
;T1_1, T2_1, T3_1
(do-for-all-facts ((?fact ar-node)) (eq ?fact:trip 1)
(modify ?fact (allowed-values A B C D E F))))
主要的:
int main(void)
{
DATA_OBJECT rtn;
void *env = CreateEnvironment();
printf("Environment Created!\n");
EnvSetConserveMemory(env, 1);
int result = EnvLoad(env, "custom/rules/test.clp");
if(result == 0) {
printf("Unable to find the consruct!\n");
DestroyEnvironment(env);
return(1);
} else if(result == -1) {
printf("Unable to load the consruct!\n");
DestroyEnvironment(env);
return(1);
}
printf("Construct Loaded!\n");
EnvReset(env);
printf("Environment Reset!\n");
EnvFunctionCall(env,"reset-allowed-values", 0, &rtn);
printf("CLIPS test done! Used memory %ld bytes.\n", EnvMemUsed(env));
DestroyEnvironment(env);
return(0);
}
我目前不知道为什么调用 modify 会导致调用 reset-allowed-values 不返回。CLIPS 在 UBUNTU Linux 32 位中构建和运行。任何人都可以帮助我解决这个问题,非常感谢所有帮助。非常感谢。