如何在CLIPS中添加事实

时间:2017-12-03 19:44:21

标签: clips

我在那里找到了函数CLIPS Validate Text Entry,我想以这种方式扩展它:

(deffunction MAIN::ask-question
   (?mark ?question $?allowed-values)
   (printout t ?question)
   (bind ?answer (read))
   (if (lexemep ?answer)
      then
      (bind ?answer (lowcase ?answer))
      (assert car-mark

所以,如果用户输入是/否,我计划在我的事实中添加新的标记 - 否则 - 不添加事实。但剪辑会出错:

[PRNTUTIL2]语法错误:检查RHS模式的相应语法。

ERROR:

private static int times(String A, String B) {      

    StringBuffer aPlus = new StringBuffer(A);
    int times = 1;
    while (aPlus.length() < B.length()) {
        aPlus.append(A);
        times++;
    }

    if (aPlus.indexOf(B) != -1) {
        return times;
    }

    // prefix 
    aPlus.append(A);
    if (aPlus.indexOf(B) != -1) {
        return ++times;
    }

    //suffix
    aPlus.insert(0, A);
    if (aPlus.indexOf(B) != -1) {
        return ++times;
    }
    return -1;
}

我的car-mark模板:

(deftemplate car-mark     (插槽名称) )

如何正确添加新事实并考虑用户输入(是 - 添加,不 - 不添加)?

1 个答案:

答案 0 :(得分:0)

(assert (car-mark (name "foo")))