首页 > 解决方案 > 调用 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 位中构建和运行。任何人都可以帮助我解决这个问题,非常感谢所有帮助。非常感谢。

标签: clips

解决方案


推荐阅读