-let rec rev_iter f map = function
- | Null -> f ()
- | Cons (tl, None, b) ->
- let f _ = map f tl b in rev_iter f map tl
- | Cons (tl, Some c, b) ->
- let f _ = map f c b in rev_iter f map tl
+let rec get i = function
+ | Null -> Null, Null, [], Void
+ | Cons (e, c, a, b) when i = 0 -> e, c, a, b
+ | Cons (e, _, _, _) -> get (pred i) e