I'm making a list of all the breed of dog sizes in my database, e.g.
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).
so I get the sizes from the database, but want to just have the unique sizes so that I can count them later. If I use
sizes(List) :- findall(Size, breed(_,Size,_), List).
I get duplicates e.g. [medium, medium, large, unknown, unknown, unknown]
setof/3 is meant to make the set unique, so i tried
sizes(List) :- setof(Size, breed(_,Size,_), List).
but it now only return the first entry [medium]
Any ideas why??