2011-03-08 6 views
3

Je suis nouveau à Prolog.Comment faire cela dans Prolog?

En utilisant cette structure « base de données » de base, je pensais que je serais en mesure d'interroger la base de données pour savoir

  • qui mange du poisson?
  • Que mangent les baleines?

    eats(Horse, grass). 
    eats(Monkey, banana). 
    eats(Whale, fish). 
    

Je voudrais de ne pas modifier cette configuration de base de données (si possible). J'utilisais les requêtes suivantes avec les résultats indésirables respectifs: « Qui mange du poisson »

Ici, j'étais en train demander,

?- eats(X, fish). 
true. 

Ici, j'étais essaie de demander, «qu'est-ce que les baleines mangent?

?- eats(Whale,X). 
X = grass ; 
X = banana ; 
X = fish. 

Répondre

9

Vos requêtes sont correctes, c'est votre base de données de faits qui est erronée. Les atomes doivent commencer par une lettre minuscule (ou être cité). Vous avez commencé Horse, Monkey, Whale avec des majuscules, donc ce sont des variables (et correspondent à n'importe quoi). Par conséquent, votre base de données actuelle est équivalente à:

eats(X, grass). 
eats(X, banana). 
eats(X, fish).