Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- (* Regular *)
- fun pow n 0 = 1
- | pow n m = n * (pow n (m -1));
- (* CPS *)
- fun powk n m k = if m = 0 then k(1) else powk n (m-1) (fn x => k(n*x));
- pow 2 5;
- powk 2 5 (fn x => x);
- (* Regular *)
- fun prod [] = 1
- | prod (x :: xs) = x * (prod xs);
- (* CPS *)
- fun prodk [] k = k(1)
- | prodk (x :: xs) k = prodk xs (fn y => k(x*y));
- prod [1, 2, 3, 4, 5];
- prodk [1, 2, 3, 4, 5] (fn x => x);
- (* CPS Maps *)
- fun mapk f [] k = k []
- | mapk f ( x :: xs ) k = mapk f xs (fn vs => f x (fn v => k (v :: vs)));
- fun add_1k n cont = cont (n + 1);
- mapk add_1k [0, 1, 2, 3, 4] (fn x => x);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement