5

プロローグのsetofのソースコードは何ですか?

4

2 に答える 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.
于 2011-04-16T09:12:21.273 に答える
0

Sicstusの組み込み述語の実装を探している場合は、次の場所にあります。http : //www.sics.se/sicstus/docs/4.2.1/html/sicstus/mpg_002dref_002dsetof.html次のようになります。

setof(+Template, +Generator, -Set)

findall/3やbagof/3とは異なり、setofは重複を返さず、並べ替えられた順序を示します。

私。

于 2012-06-19T16:49:59.053 に答える