Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- let rec lrepeat f xs =
- let rec aux = function
- (LCons(x, xf), i, 0) -> aux(xf(), i+1, (f (i + 1)))
- | (LCons(x, xf) as xl, i, r) -> LCons(x, fun() -> aux(xl, i, (r - 1)))
- | (LNil, _, _) -> LNil
- in aux(xs, 0, (f 0));;
- let sublist xs lxs =
- let rec iter = function
- (_, LNil, _) -> LNil
- | ([], lxs, _) -> lxs
- | (h::t, LCons(x, xf), i) -> if h = i
- then iter(t, xf(), i+1)
- else LCons(x, function() -> iter(h::t, xf(), i+1))
- in iter(List.sort compare xs, lxs, 0);;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement