fork(1) download
  1. :- dynamic foo/1.
  2.  
  3. lower(X,X).
  4. lower(X,U):- X is U-1. % duplicate
  5. lower(X,U):- U > 0, U1 is U-1, !, lower(X, U1).
  6.  
  7. init(U):-
  8. lower(X,U),
  9. \+(foo(X)), assert(foo(X)),
  10. fail; !, true.
  11.  
  12. show_all:-
  13. foo(X), print(X), nl, fail; !, true.
  14.  
  15. :- init(5), show_all.
Success #stdin #stdout 0.02s 6204KB
stdin
Standard input is empty
stdout
5
4
3
2
1
0
-1