Mercurial > repos > other > SevenLanguagesInSevenWeeks
view 3-Prolog/day1-food.pl @ 99:67631cb2ea48
Expand the last note on getting into the monad state
author | IBBoard <dev@ibboard.co.uk> |
---|---|
date | Sun, 30 Jun 2019 16:15:33 +0100 |
parents | cbaa3546f3f8 |
children |
line wrap: on
line source
% Define some foods and "flavours". % Note that this is Americanised, so some of these definitions are generous! food_type(velveeta, cheese). food_type(ritz, cracker). food_type(spam, meat). food_type(sausage, meat). food_type(jolt, soda). food_type(twinkie, dessert). flavour(sweet, dessert). flavour(savoury, meat). flavour(savoury, cheese). flavour(sweet, soda). food_flavour(X, Y) :- food_type(X, Z), flavour(Y, Z). % Note: flavour(sweet, What) will return 'yes' and a closed set of answers because it is just all of the facts % but "food_flavour(What, meat)" will return answers and then say 'no', because it hasn't been given a flavour() % fact for "ritz"/"cracker". % This doesn't explain why "food(What, meat)" returns "no" after spam and sausage, though. Maybe because there's % flavour(savoury, meat) so Prolog knows savoury is associated with meat but doesn't know whether it is in a food() % fact without more processing?