I’d like an OCaml function,
which I’ll call continueq, with the property that for any function f with
argument(s) fargs,
continueq f fargs tsecs defaultval
starts evaluating f on fargs and
lets this evaluation proceed for up to tsecs seconds. If the computation of (f
fargs) completes in this time, then it returns the result of that computation.
Otherwise, it asks the user how many seconds to let the computation of (f
fargs) proceed. If the user inputs a value less than or equal to 0, then it
returns defaultval. If the user inputs a value tsecs’ greater than 0,
then it evaluates
continueq f’ fargs’ tsecs’
defaultval
where (f’ fargs’)
denotes the computation state of (f fargs) at the time it was interrupted.
I want to
give the user the option of continuing without having to repeat earlier
calculations. This is similar to the checkpoint utility ckpt, and similar to
the “timeout” function described in the O’Reilly “'Developing
Applications with Objective Caml” reference book, but not quite
the same as either. Will someone please tell me how to do it?
Steve