Currently working through the Seven Languages in Seven Weeks book, and am stuck on getting the first prolog examples to run. This concerns the same code piece as this question; however I believe my question is quite different.
I have defined likes
and friend
as in the book; my friends.pl:
likes(wallace, cheese).
likes(grommit, cheese).
likes(wendolene, sheep).
friend(X, Y) :- \+(X = Y), likes(X, Z), likes(Y, Z).
I am using gnu prolog (v1.4.5, on Ubuntu 18.10), and I can load the friends.pl consultfile, either via | ?- [friends.pl]
or | ?- ['friends.pl']
or by calling gprolog with its --consult-file
parameter: gprolog --consult-file friends.pl
just fine
Asking about the likes
facts or the first part of the friend
rule works just fine:
| ?- likes(grommit, cheese).
yes
| ?- friend(grommit, grommit).
no
However, when I try a query which concerns the second part of the rule, I get this:
| ?- friend(grommit, wendolene).
uncaught exception: error(existence_error(procedure,likes/0),friend/0)
As I read the error message, it tells me that there is no procedure "likes" which takes 0 parameters, right? But where in my rule is such a 0-parameter procedure referenced? What am I doing wrong here? Can't believe this to be a bug in my prolog ;)?