我正在我的数据库中列出所有犬种大小的列表,例如
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).
我得到重复项,例如 [medium, medium, large, unknown, unknown, unknown]
setof/3 旨在使集合独一无二,所以我尝试了
sizes(List) :- setof(Size, breed(_,Size,_), List).
但它现在只返回第一个条目 [medium]
任何想法为什么?