Mine
public text v1 · immutable
(* implementation *)
open Printf
type 'a cont = 'a * (unit -> 'a cont)
let evens n =
let rec loop k () =
if k == n then
None
else
Some (k , loop (k + 2))
in loop 2
let test () =
let rec loop next =
match next () with
| None -> ()
| Some (res, next') ->
printf "%i\n" res;
loop next'
in loop (evens 10)
let _ = test ()
(* interface *)
type 'a cont
val evens : int -> int cont option