elk01:~> cat supply2.pl
/* SUPPLIERS (SNAME, SADDR) */
suppliers(sunshine_produce, a_16_river_st).
suppliers(purity_foodstuffs, a_180_industry_rd).
suppliers(tasti_supply_co, a_17_river_st).
/* SUPPLIES (SNAME, ITEM, PRICE) */
supplies(sunshine_produce, granola, 129).
supplies(sunshine_produce, lettuce, 89).
supplies(sunshine_produce, walnuts, 109).
supplies(purity_foodstuffs, whey, 70).
supplies(purity_foodstuffs, curds, 80).
supplies(purity_foodstuffs, granola, 125).
supplies(purity_foodstuffs, flour, 65).
supplies(tasti_supply_co, lettuce, 79).
supplies(tasti_supply_co, whey, 79).
supplies(tasti_supply_co, walnuts, 119).
items(ITEM, SNAME, SADDR) :-
supplies(SNAME, ITEM, _),
suppliers(SNAME, SADDR).
items_print(ITEM) :-
items(ITEM, SNAME, SADDR),
write(ITEM), write(' '),
write(SNAME), write(' '),
write(SADDR), write(' '), nl, fail.
sup_info(SNAME, SADDR, ITEM, PRICE) :-
suppliers(SNAME, SADDR),
supplies(SNAME, ITEM, PRICE).
sup_info_print(_) :-
sup_info(SNAME, SADDR, ITEM, PRICE),
write(SNAME), write(' \t'),
write(SADDR), write(' \t'),
write(ITEM), write(' \t'),
write(PRICE), nl, fail.
|
elk01:~> prolog
Welcome to SWI-Prolog blah, blah, blah ...
?- consult(supply3).
% supply3 compiled 0.00 sec, 3,396 bytes
?- items(granola, SNAME, SADDR).
SNAME = sunshine_produce
SADDR = a_16_river_st ;
SNAME = purity_foodstuffs
SADDR = a_180_industry_rd ;
No
?- items_print(granola).
granola sunshine_produce a_16_river_st
granola purity_foodstuffs a_180_industry_rd
No
?- sup_info(X, Y, Z, W).
X = sunshine_produce
Y = a_16_river_st
Z = granola
W = 129 ;
(7 items deleted)
X = tasti_supply_co
Y = a_17_river_st
Z = walnuts
W = 119.
?- sup_info_print(_).
sunshine_produce a_16_river_st granola 129
sunshine_produce a_16_river_st lettuce 89
sunshine_produce a_16_river_st walnuts 109
purity_foodstuffs a_180_industry_rd whey 70
purity_foodstuffs a_180_industry_rd curds 80
purity_foodstuffs a_180_industry_rd granola 125
purity_foodstuffs a_180_industry_rd flour 65
tasti_supply_co a_17_river_st lettuce 79
tasti_supply_co a_17_river_st whey 79
tasti_supply_co a_17_river_st walnuts 119
false.
?- halt.
|