Пролог setof/3 не возвращает все элементы
Я делаю список всех пород собак в моей базе данных, например
breed(beagle,medium, hunting).
breed(bassets,medium, hunting).
breed(labrador,large, guideDogs).
breed(germanShepards,large, guardDogs).
breed(boxer,unknown,unknown).
breed(dalmation,unknown,unknown).
breed(ridgeback,unknown,unknown).
поэтому я получаю размеры из базы данных, но хочу просто иметь уникальные размеры, чтобы я мог посчитать их позже. Если я использую
sizes(List) :- findall(Size, breed(_,Size,_), List).
Я получаю дубликаты, например [средний, средний, большой, неизвестный, неизвестный, неизвестный]
setof / 3 предназначен для того, чтобы сделать набор уникальным, поэтому я попытался
sizes(List) :- setof(Size, breed(_,Size,_), List).
но теперь он возвращает только первую запись [средний]
Есть идеи почему??