Предполагая, что только объекты (то есть без категорий) реализуют протокол person
, вы можете вычислить их количество, например,
count(N) :-
findall(1, implements_protocol(_,person), L),
list::length(L, N).
Замените вызов на implements_protocol /2
на conforms_to_protocol/2
, если у вас есть иерархия объектов. Вы также можете обобщить предикат count/1
, передав протокол в качестве аргумента.