Я относительно новичок в Прологе, так что терпите меня. Скажем, у меня есть факты, каждый из которых содержит человека и его увлечения (в списке):
hobbies(mark, [running, video_games, soccer])
hobbies(jasmine, [writing, swimming, music])
hobbies(john, [rugby, rowing, pets, politics])
hobbies(lisa, [gymnastics, dancing, television])
Что я хочу сделать прямо сейчас, так это определить предикат (назовем его same
), где same(P1, P2, H)
будет истинным, если P1
и P2
имеют общее хобби H
. Я знаю, что мне нужно использовать предикат члена, но пока я научился использовать его только в более простых случаях. Будет ли это что-то вроде:
same(P1, P2, H) :- member(H, P1), member(H, P2)
Однако я, конечно, знаю, что это невозможно. Как мне получить доступ к списку этих фактов?
member(H, P1)
не имеет смысла, потому чтоH
— это хобби, аP1
— человек. Для данного человека, скажемP1
, какое отношение определяет список его увлечений? И как бы вы поместили их в переменную, скажем,HobbyList1
? Тогда вы могли бы сказать,member(H, HobbyList1)
. - person lurker   schedule 03.05.2016