Come far valere nuova regola da input dell'utente (PROLOG)
-
26-10-2019 - |
Domanda
voglio accettare l'input degli utenti, vale a dire [garfield, hates, blacky]
.
hates/2
non esiste attualmente.
Nel mio database,
process:-
read(Input_List),
add_rule(Input_List).
add_rule([X, Predicate, Y]):-
assertz(Predicate(X, Y)).
Ma questo non funziona. E 'possibile utilizzare una variabile come predicato, e fatti? O c'è qualche altro modo per raggiungere questo?
Soluzione
È possibile utilizzare l'operatore (=..)/2
chiamato univ operator :
add_rule(X, Predicate, Y) :-
Fact =.. [Predicate, X, Y],
assertz(Fact).
Utilizzo:
?- add_rule(garfield, hates, blacky).
true.
?- hates(garfield, blacky).
true.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow