Wie man eine neue Regel von der Benutzereingabe (Prolog) geltend macht
-
26-10-2019 - |
Frage
Ich möchte die Eingabe der Benutzer akzeptieren, dh [garfield, hates, blacky]
.
hates/2
existiert derzeit nicht.
In meiner Datenbank,
process:-
read(Input_List),
add_rule(Input_List).
add_rule([X, Predicate, Y]):-
assertz(Predicate(X, Y)).
Aber das funktioniert nicht. Ist es möglich, eine Variable als Prädikat und Fakten zu verwenden? Oder gibt es eine andere Möglichkeit, dies zu erreichen?
Lösung
Du kannst den ... benutzen (=..)/2
Bediener angerufen UNIV -Operator :
add_rule(X, Predicate, Y) :-
Fact =.. [Predicate, X, Y],
assertz(Fact).
Verwendungszweck :
?- add_rule(garfield, hates, blacky).
true.
?- hates(garfield, blacky).
true.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow