type 'a cont = { data : 'a; fn : unit -> 'a cont option; };; let evens n = let rec loop k () = if k == n then None else Some ({ data = k; fn = loop (k + 2)}) in loop 2 ();;