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:01]
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 322: Line 318:
 ?- ?-
 </​code>​ </​code>​
 +
 +<​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 ''​set_prolog_flag(answer_write_options,​[max_depth(0)]).'':​
 +
 +<​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)]).
 +true.
 +
 +?- findall(P, parent(P, C), L).
 +L = [bestla,​bestla,​bestla,​jorth,​frigg,​buri,​borr,​borr,​borr,​odin,​odin].
 +</​code>​
 +
 +Soluție alternativă găsiți [[https://​stackoverflow.com/​a/​36948699|aici]].
 +</​note>​
  
 ==== Exerciții ==== ==== Exerciții ====