Slide 14.18: Facts with arguments (cont.) Slide 14.20: Variables and unification (cont.) Home |
eats( fred, mangoes ).
How do we ask what fred
eats?
We could type in something like
?- eats( fred, what ).
However Prolog will say no
.
The reason for this is that what
does not match with mangoes
.
In order to match arguments in this way we must use a variable.
The process of matching items with variables is known as unification.
Variables are starting with a capital letter, for example,
X /* a capital letter */ VaRiAbLe /* a word——either case of letters */ My_name /* linking words together via '_' */Thus returning to our first question we can find out what
fred
eats by typing
?- eats( fred, What ). What = mangoes yesAs a result of this query, the variable
What
has matched (or unified) with mangoes
.
We say that the variable What
now has the binding mangoes
.
When we pose a query, if the query is successful, Prolog prints both the variable and the variable name, as we see above.
loves( john, mary ). loves( fred, hobbies ).