Mercurial > repos > other > SevenLanguagesInSevenWeeks
annotate 3-Prolog/day1-food.pl @ 52:cbaa3546f3f8
Add extra thought on why you sometimes get "no" and sometimes "yes" after variable lists
author | IBBoard <dev@ibboard.co.uk> |
---|---|
date | Tue, 26 Sep 2017 19:42:02 +0100 |
parents | 178b18b4f9ba |
children |
rev | line source |
---|---|
51 | 1 % Define some foods and "flavours". |
2 % Note that this is Americanised, so some of these definitions are generous! | |
3 food_type(velveeta, cheese). | |
4 food_type(ritz, cracker). | |
5 food_type(spam, meat). | |
6 food_type(sausage, meat). | |
7 food_type(jolt, soda). | |
8 food_type(twinkie, dessert). | |
9 | |
10 flavour(sweet, dessert). | |
11 flavour(savoury, meat). | |
12 flavour(savoury, cheese). | |
13 flavour(sweet, soda). | |
14 | |
15 food_flavour(X, Y) :- food_type(X, Z), flavour(Y, Z). | |
16 % Note: flavour(sweet, What) will return 'yes' and a closed set of answers because it is just all of the facts | |
17 % but "food_flavour(What, meat)" will return answers and then say 'no', because it hasn't been given a flavour() | |
18 % fact for "ritz"/"cracker". | |
52
cbaa3546f3f8
Add extra thought on why you sometimes get "no" and sometimes "yes" after variable lists
IBBoard <dev@ibboard.co.uk>
parents:
51
diff
changeset
|
19 % This doesn't explain why "food(What, meat)" returns "no" after spam and sausage, though. Maybe because there's |
cbaa3546f3f8
Add extra thought on why you sometimes get "no" and sometimes "yes" after variable lists
IBBoard <dev@ibboard.co.uk>
parents:
51
diff
changeset
|
20 % flavour(savoury, meat) so Prolog knows savoury is associated with meat but doesn't know whether it is in a food() |
cbaa3546f3f8
Add extra thought on why you sometimes get "no" and sometimes "yes" after variable lists
IBBoard <dev@ibboard.co.uk>
parents:
51
diff
changeset
|
21 % fact without more processing? |