2011-04-16 4 views
3

Quel est le code source de setof dans prolog?setof dans prolog

+0

Êtes-vous à la recherche d'une implémentation particulière? J'ai utilisé SWI-Prolog pour ma réponse, mais je peux vous en donner une autre si vous le souhaitez. –

Répondre

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.