view 3-Prolog/day1-wallaceandgrommit.pl @ 56:2bbb377ddeb0

Add more examples, more thoughts and a three-argument "collaborated" rule
author IBBoard <dev@ibboard.co.uk>
date Tue, 26 Sep 2017 20:45:26 +0100
parents 178b18b4f9ba
children
line wrap: on
line source

% Start with some simple facts
% Note: like semantic systems, names are intrinsicly equal variables
% (or variables don't exist). Names are called "atoms"
likes(wallace, cheese).
likes(grommit, cheese).
likes(wendolene, sheep).
% Each statement ends with a fullstop

% Rule syntax is a bit odd (":-" and "\+") but we're saying that X and Y
% can be friends if X and Y like the same thing.
% Poor Wendolene.
friend(X, Y) :- \+(X = Y), likes(X, Z), likes(Y, Z).
% "\+" is apparently logical negation (because of course it is)
% so the first "subgoal" stops Wallace being Wallace's friend
%
% Note: Prolog nomenclature is that this is "friend/2" - friend func with 2 params