Prolog setof/3 not returning all elements

516 Views Asked by At

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??

0

There are 0 best solutions below