Prolog中的setof

5

setof在Prolog中的源代码是什么?


你在寻找特定的实现吗?我在我的回答中使用了SWI-Prolog,但如果您愿意,我可以给您另一个实现。 - Rafe Kettler
2个回答

7
?- listing(setof).
:- meta_predicate setof(?,0,-).

setof(A, B, F) :-
    free_variable_set(A, B, D, C),
    (   C==v
    ->  findall(A, D, E),
        E\==[],
        sort(E, F)
    ;   findall(C-A, D, E),
        (   ground(E)
        ->  sort(E, G),
        pick(G, C, F)
        ;   bind_bagof_keys(E, _),
        sort(E, G),
        pick(G, C, H),
        sort(H, F)
        )
    ).

true.

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接