Advertisement
uyuyuy99

CS 425 - Ass 9

Jun 9th, 2025
282
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. (* Regular *)
  2. fun pow n 0 = 1
  3.   | pow n m = n * (pow n (m -1));
  4.  
  5. (* CPS *)
  6. fun powk n m k = if m = 0 then k(1) else powk n (m-1) (fn x => k(n*x));
  7.  
  8. pow 2 5;
  9. powk 2 5 (fn x => x);
  10.  
  11.  
  12. (* Regular *)
  13. fun prod [] = 1
  14.   | prod (x :: xs) = x * (prod xs);
  15.  
  16. (* CPS *)
  17. fun prodk [] k = k(1)
  18.   | prodk (x :: xs) k = prodk xs (fn y => k(x*y));
  19.  
  20. prod [1, 2, 3, 4, 5];
  21. prodk [1, 2, 3, 4, 5] (fn x => x);
  22.  
  23.  
  24. (* CPS Maps *)
  25. fun mapk f [] k = k []
  26.   | mapk f ( x :: xs ) k = mapk f xs (fn vs => f x (fn v => k (v :: vs)));
  27. fun add_1k n cont = cont (n + 1);
  28.  
  29. mapk add_1k [0, 1, 2, 3, 4] (fn x => x);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement