我正在通过调用(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);
}
我目前不知道为什么修改调用导致对重置允许值的调用不返回。 CLIPS是在UBUNTU Linux 32位中构建和运行的。任何人都可以帮助我,对此非常感谢。 非常感谢。