(************************************************************************) (* * The Coq Proof Assistant / The Coq Development Team *) (* v * INRIA, CNRS and contributors - Copyright 1999-2018 *) (* assert false | Default data | Set data -> data let set (hook : 'a t) data = match !hook with | Unset | Default _ -> hook := Set data | Set _ -> assert false let make ?default () = let data = match default with | None -> Unset | Some data -> Default data in let ans = ref data in (ans, ans)