2010-05-27 8 views
0

번호의 모든 파티션을 생성하는 클립으로 프로그램을 만들고 싶습니다. 우선 나는 그의 기본 파티션과 같은 숫자로 시작 : (1 1 1 1 1)은 숫자 5 인 경우 등클립의 이상한 오류

(deftemplate partition (multislot p)) 
(deffacts facts (p 1 1 1 1 1)) 
(defrule adds 
    (p $?a ?b ?c $?d) 
    (not (p $?a (+ ?b ?c) $?d)) 
    (not (p (+ ?b ?c) $?a $?d)) 
    (not (p $?a $?d (+ ?b ?c))) 
=> (assert (p $?a (+ ?b ?c) $?d)) 
) 

문제는 코드가 잘 보이지만, 그것은에 오류가 있다는 것입니다 "not"가있는 행 - 작성한 새 파티션이 사실에 존재하지 않아야한다고 지정합니다. 나는 무엇이 문제인지 모르겠다. 어떤 생각이라도 환영한다.

(defrule adds 
    (p $?a ?b ?c $?d) 

    (not (p $?a =(+ ?b ?c) $?d)) 

    (not (p =(+ ?b ?c) $?a $?d)) 

    (not (p $?a $?d =(+ ?b ?c))) 

    => 

    (assert (p $?a (+ ?b ?c) $?d))) 
: 감사 규칙의 조건 부분에서

답변

1

, 당신은 식을 평가하고 사실에 값을 일치하는지 확인하기 위해 = 연산자를 사용합니다