home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / lifeos2.zip / LIFE-1.02 / TESTS / LF / GLOB_GC.LF < prev    next >
Text File  |  1996-06-04  |  841b  |  50 lines

  1. % Test the interaction between the GC and global/persistent terms.
  2.  
  3. non_strict(c_for)?
  4. non_strict(c_while)?
  5. non_strict(c_equal)?
  6. non_strict(if)?
  7.  
  8. for(A,B,C,D) :- execute(A),while(B,(C,D)).
  9.  
  10. while(A,B) :- execute(A),execute(B),!,while(A,B).
  11. while.
  12.  
  13. if(A,B) :- execute(A),!,execute(B).
  14. if.
  15.  
  16. P:print :- Q=eval(P),write&strip(Q).
  17.  
  18. execute((A,B)) :- !,execute(A),execute(B).
  19. execute(A=B) :- !,eval(A)=eval(B).
  20. execute(A) :- A.
  21.  
  22. c_equal(A,B) :- eval(A)<<-eval(B).
  23.  
  24. less_than(A,B) :- eval(A) < eval(B).
  25.  
  26. persistent(program)?
  27.  
  28. global(i,n,sum,init_value)?
  29.  
  30. program <<- `( (
  31.  
  32.     c_equal(n,init_value),
  33.  
  34.     c_equal(sum,1),
  35.  
  36.     for(c_equal(i,0),
  37.             less_than(i,n),
  38.         c_equal(i,i+1),
  39.         (c_equal(sum,sum+i),
  40.          if(i mod 50=0,(print(i,"->",sum),nl)))),
  41.  
  42.         print("done"),
  43.  
  44.         nl) ) ?
  45.  
  46. test(N) :- init_value <- N, execute(program).
  47.  
  48.  
  49.  
  50.