Вы можете использовать объединение, например:
type(<b>L</b> : drink).
Это объединит L
с этим списком, например:
?- type(L: drink).
L = [coffee, tea, lemonade, water, coke, beer].
При этом, это не очень распространено дляиспользуйте здесь двоеточие (:
), обычно используются разные параметры.Кроме того, списки не очень распространены в фактах, так как вы теряете возможность легко проверить, например, тип tea
.
Более идиоматично писать:
type(coffee, drink).
type(tea, drink).
type(lemonade, drink).
type(water, drink).
type(coke, drink).
type(beer, drink).
Мы можем, например, запросить элементы типа drink
:
?- type(D, drink).
D = coffee ;
D = tea ;
D = lemonade ;
D = water ;
D = coke ;
D = beer.
Или запросить тип water
:
?- type(water, T).
T = drink.
Проверить, если newspaper
или coke
: drink
s:
?- type(newspaper, drink).
false.
?- type(coke, drink).
true.
и перечисление всех элементов с их типом:
?- type(X, T).
X = coffee,
T = drink ;
X = tea,
T = drink ;
X = lemonade,
T = drink ;
X = water,
T = drink ;
X = coke,
T = drink ;
X = beer,
T = drink.
Затем можно создать список с помощью findall/3
[swi-doc] предикат:
?- findall(D, type(D, drink), Ds).
Ds = [coffee, tea, lemonade, water, coke, beer].