2011-11-30 4 views
1

사용자 입력을 허용하고 싶습니다 (예 : [garfield, hates, blacky]). hates/2은 (는) 현재 존재하지 않습니다. 내 데이터베이스에서 사용자 입력 (PROLOG)에서 새 규칙을 적용하는 방법

,

process:- 
    read(Input_List), 
    add_rule(Input_List). 

add_rule([X, Predicate, Y]):- 
    assertz(Predicate(X, Y)). 

하지만이 작동하지 않습니다. 변수를 술어와 사실로 사용할 수 있습니까? 또는이를 수행 할 수있는 다른 방법이 있습니까?

답변

4

당신은 (=..)/2 운영자가 univ operator라고 사용할 수 있습니다

add_rule(X, Predicate, Y) :- 
    Fact =.. [Predicate, X, Y], 
    assertz(Fact). 

사용법 : 그것은 작동

?- add_rule(garfield, hates, blacky). 
true. 

?- hates(garfield, blacky). 
true. 
+0

합니다. 감사 –