Guest User

Untitled

a guest
Feb 20th, 2018
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.52 KB | None | 0 0
  1. MODULE procpointer;
  2.  
  3. FROM Printf IMPORT printf;
  4.  
  5. TYPE
  6. Callable = PROCEDURE(INTEGER): INTEGER;
  7.  
  8. PROCEDURE inc(x: INTEGER): INTEGER;
  9. BEGIN
  10. RETURN x + 1;
  11. END inc;
  12.  
  13. PROCEDURE dec(x: INTEGER): INTEGER;
  14. BEGIN
  15. RETURN x - 1;
  16. END dec;
  17.  
  18. PROCEDURE runner(VAR x: INTEGER; func: Callable);
  19. BEGIN
  20. x := func(x);
  21. END runner;
  22.  
  23. VAR x: INTEGER;
  24.  
  25. BEGIN
  26. x := 0;
  27. printf("%d\n", x);
  28.  
  29. runner(x, inc);
  30. printf("%d\n", x);
  31.  
  32. runner(x, dec);
  33. printf("%d\n", x);
  34.  
  35.  
  36. END procpointer.
Add Comment
Please, Sign In to add comment