Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
pp:lplcut [2019/05/06 14:08]
dmihai
pp:lplcut [2019/05/06 14:30] (current)
dmihai [Colectarea rezultatelor]
Line 251: Line 251:
 ?- ?-
 </​code>​ </​code>​
- 
-<​note>​ 
-În ultima interogare, nu contează dacă predicatul folosit în exterior este ''​bagof/​3''​ sau ''​findall/​3''​. Goal-ul de demonstrat (''​bagof(C,​ parent(P, C), L)''​) nu conține variabile "din afară"​. 
-</​note>​ 
  
 Ca urmare a felului de funcționare,​ o diferență notabilă între ''​findall/​3''​ și ''​bagof/​3''​ este că, atunci când goal-ul nu poate fi satisfăcut,​ ''​findall/​3''​ reușește, generând o listă vidă, iar ''​bagof/​3''​ eșuează. Ca urmare a felului de funcționare,​ o diferență notabilă între ''​findall/​3''​ și ''​bagof/​3''​ este că, atunci când goal-ul nu poate fi satisfăcut,​ ''​findall/​3''​ reușește, generând o listă vidă, iar ''​bagof/​3''​ eșuează.
Line 324: Line 320:
  
 <​note>​ <​note>​
-În mod default, swi-prolog trunchiază listele rezultat, afișând doar primele elemente și ''​...''​ pentru restul. Pentru a schimba acest comportament folosiți interogarea:​+În mod default, swi-prolog trunchiază listele rezultat, afișând doar primele elemente și ''​...''​ pentru restul. Pentru a schimba acest comportament folosiți interogarea ​''​set_prolog_flag(answer_write_options,​[max_depth(0)]).''​:
  
 <​code>​ <​code>​
 +?- findall(P, parent(P, C), L).
 +L = [bestla, bestla, bestla, jorth, frigg, buri, borr, borr, borr|...].
 +
 ?- set_prolog_flag(answer_write_options,​[max_depth(0)]). ?- set_prolog_flag(answer_write_options,​[max_depth(0)]).
 true. true.
  
-?-+?- findall(P, parent(P, C), L). 
 +L = [bestla,​bestla,​bestla,​jorth,​frigg,​buri,​borr,​borr,​borr,​odin,​odin].
 </​code>​ </​code>​