Что означает "^" в прологе?

У меня есть база знаний о фильмах. Мои предикаты актера и актрисы выглядят так:

% actor(M,A,R) -- actor A played role R in movie M
% actress(M,A,R) -- actress A played role R in movie M

Я пытаюсь сосчитать разных актеров и актрис в своей базе знаний. Я бы просто написал:

count(Nr):-
setof(Name,actor(Movie,Name,Role),List1),
setof(Name,actress(Movie,Name,Role),List2),
length(List1,Nr1),
length(List2,Nr2),
Nr is Nr1+Nr2.

Это не работает, но так оно и есть:

count(Nr):-
setof(Name,(Movie^Role^actor(Movie,Name,Role)),List1),
setof(Name,(Movie^Role^actress(Movie,Name,Role)),List2),
length(List1,Nr1),
length(List2,Nr2),
Nr is Nr1+Nr2.

Так что же это "^"?

Редактировать: похоже, что-то о выборе только один раз каждый фильм и каждую роль. Но я все еще не уверен.

0 ответов

Другие вопросы по тегам