0

I am very new to Prolog, and am trying to write a rule that finds a person with more money. I am consulting a file which looks like this:

money('Henry', 200).
money('Sally', 500).
money('Tom', 50).

Here is my attempt at writing a rule that finds the person with more money:

richer(X, Y):- money(X) > money(Y).

Which is not working. I'm kind of lost on how to access that numeric value from the file I'm consulting. Sorry for the simple question, but I have tried Googling it for a while with no success.

false
  • 10,264
  • 13
  • 101
  • 209
Royal Rat
  • 165
  • 1
  • 7

1 Answers1

0

Prolog predicates are not functions. There is no money function that "returns" a value. To "get" values out of Prolog predicates you call them with variables as arguments.

So to get the money a person X has, you write money(X, XMoney). Your predicate could be defined as:

richer_than(X, Y) :-
    money(X, XMoney),
    money(Y, YMoney),
    XMoney > YMoney.
Isabelle Newbie
  • 9,258
  • 1
  • 20
  • 32