% file: enumerate.pro % author: Robert Keller % purpose: relation enumeration utility % show shows an enumerated relation, one tuple per line show(Relation) :- enumerate(Relation, List), list(List). % enumerate enumerates a named relation to produce a list enumerate(Relation, List) :- current_predicate(Relation, Form), Form =..[Relation | Args], (setof(Args, Form, List) ; List = []). % list shows a list, one element per line list([]). list([A | X]) :- write(A), nl, list(X).