module EnvLazy: sig .. end
type t('a, 'b);
type log;
let force: ('a => 'b, t('a, 'b)) => 'b;
let create: 'a => t('a, 'b);
let get_arg: t('a, 'b) => option('a);
let create_forced: 'b => t('a, 'b);
let create_failed: exn => t('a, 'b);
let log: unit => log;
let force_logged:
(log, 'a => result('b, 'c), t('a, result('b, 'c))) => result('b, 'c);
let backtrack: log => unit;